{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a9ced852-425c-4ee0-952e-4fa1d758eca4",
   "metadata": {},
   "outputs": [],
   "source": [
    "from glob import glob\n",
    "import pandas as pd\n",
    "from scipy.stats import spearmanr\n",
    "from statsmodels.sandbox.stats.multicomp import multipletests\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "\n",
    "sns.set_style('whitegrid')\n",
    "\n",
    "def p_adjust(pvalues, method='fdr_bh'):\n",
    "    res = multipletests(pvalues, method=method)\n",
    "    return np.array(res[1], dtype=float)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "557c8ac7-e08d-48c9-af93-cb67852fb4d0",
   "metadata": {},
   "source": [
    "# Correlating Kraken abundances with continuous vaccine titers\n",
    "\n",
    "##### Michael Shaffer\n",
    "##### 7/21/2022\n",
    "##### Merck ESC, Sys bio group\n",
    "\n",
    "To find if any bacterial taxa are correlated with vaccine response we will pick time points (2, 4, 6, 8 and 12 months) and correlate the bacterial abundances at those timepoints with continuous vaccine response at one year."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c4c86528-cf6b-498e-ab8b-83f984395db8",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Read in data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "44af0051-eb8d-4c74-a80e-c07d9bc7259f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SubmissionType</th>\n",
       "      <th>SampleNumber</th>\n",
       "      <th>SampleIDValidation</th>\n",
       "      <th>DiversigenCheckInSampleName</th>\n",
       "      <th>BoxLocation</th>\n",
       "      <th>SampleType</th>\n",
       "      <th>SampleSource</th>\n",
       "      <th>SequencingType</th>\n",
       "      <th>BabyN</th>\n",
       "      <th>BabyN_checked</th>\n",
       "      <th>...</th>\n",
       "      <th>PCV ST9V_mmNorm</th>\n",
       "      <th>PCV ST14_mmNorm</th>\n",
       "      <th>PCV ST18C_mmNorm</th>\n",
       "      <th>PCV ST19A_mmNorm</th>\n",
       "      <th>PCV ST19F_mmNorm</th>\n",
       "      <th>PCV ST23F_mmNorm</th>\n",
       "      <th>median_mmNorm</th>\n",
       "      <th>median_mmNorm_DTAPHib</th>\n",
       "      <th>median_mmNorm_PCV</th>\n",
       "      <th>VR_group</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SampleID</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>103_V3</th>\n",
       "      <td>Primary in Tube</td>\n",
       "      <td>149</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Box 11, A6</td>\n",
       "      <td>Stool</td>\n",
       "      <td>Human Infant</td>\n",
       "      <td>MetaG</td>\n",
       "      <td>103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.277753</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>0.086356</td>\n",
       "      <td>0.035467</td>\n",
       "      <td>0.057453</td>\n",
       "      <td>0.300910</td>\n",
       "      <td>0.190854</td>\n",
       "      <td>0.326317</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>NVR</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>103_V9</th>\n",
       "      <td>Primary in Tube</td>\n",
       "      <td>186</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Box 12, B1</td>\n",
       "      <td>Stool</td>\n",
       "      <td>Human Infant</td>\n",
       "      <td>MetaG</td>\n",
       "      <td>103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.277753</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>0.086356</td>\n",
       "      <td>0.035467</td>\n",
       "      <td>0.057453</td>\n",
       "      <td>0.300910</td>\n",
       "      <td>0.190854</td>\n",
       "      <td>0.326317</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>NVR</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>103_S1</th>\n",
       "      <td>Primary in Tube</td>\n",
       "      <td>225</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Box 13, B4</td>\n",
       "      <td>Stool</td>\n",
       "      <td>Human Infant</td>\n",
       "      <td>MetaG</td>\n",
       "      <td>103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.277753</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>0.086356</td>\n",
       "      <td>0.035467</td>\n",
       "      <td>0.057453</td>\n",
       "      <td>0.300910</td>\n",
       "      <td>0.190854</td>\n",
       "      <td>0.326317</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>NVR</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>103_V10</th>\n",
       "      <td>Primary in Tube</td>\n",
       "      <td>241</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Box 13, E1</td>\n",
       "      <td>Stool</td>\n",
       "      <td>Human Infant</td>\n",
       "      <td>MetaG</td>\n",
       "      <td>103</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.277753</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>0.086356</td>\n",
       "      <td>0.035467</td>\n",
       "      <td>0.057453</td>\n",
       "      <td>0.300910</td>\n",
       "      <td>0.190854</td>\n",
       "      <td>0.326317</td>\n",
       "      <td>0.146465</td>\n",
       "      <td>NVR</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>108_V2</th>\n",
       "      <td>Primary in Tube</td>\n",
       "      <td>6</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Box 7, A6</td>\n",
       "      <td>Stool</td>\n",
       "      <td>Human Infant</td>\n",
       "      <td>MetaG</td>\n",
       "      <td>108</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.871843</td>\n",
       "      <td>0.366194</td>\n",
       "      <td>0.164958</td>\n",
       "      <td>0.041692</td>\n",
       "      <td>0.063590</td>\n",
       "      <td>0.371471</td>\n",
       "      <td>0.168430</td>\n",
       "      <td>0.172291</td>\n",
       "      <td>0.164958</td>\n",
       "      <td>NVR</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 72 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           SubmissionType  SampleNumber  SampleIDValidation  \\\n",
       "SampleID                                                      \n",
       "103_V3    Primary in Tube           149                 NaN   \n",
       "103_V9    Primary in Tube           186                 NaN   \n",
       "103_S1    Primary in Tube           225                 NaN   \n",
       "103_V10   Primary in Tube           241                 NaN   \n",
       "108_V2    Primary in Tube             6                 NaN   \n",
       "\n",
       "         DiversigenCheckInSampleName BoxLocation SampleType  SampleSource  \\\n",
       "SampleID                                                                    \n",
       "103_V3                           NaN  Box 11, A6      Stool  Human Infant   \n",
       "103_V9                           NaN  Box 12, B1      Stool  Human Infant   \n",
       "103_S1                           NaN  Box 13, B4      Stool  Human Infant   \n",
       "103_V10                          NaN  Box 13, E1      Stool  Human Infant   \n",
       "108_V2                           NaN   Box 7, A6      Stool  Human Infant   \n",
       "\n",
       "         SequencingType  BabyN  BabyN_checked  ... PCV ST9V_mmNorm  \\\n",
       "SampleID                                       ...                   \n",
       "103_V3            MetaG    103            NaN  ...        0.277753   \n",
       "103_V9            MetaG    103            NaN  ...        0.277753   \n",
       "103_S1            MetaG    103            NaN  ...        0.277753   \n",
       "103_V10           MetaG    103            NaN  ...        0.277753   \n",
       "108_V2            MetaG    108            NaN  ...        0.871843   \n",
       "\n",
       "          PCV ST14_mmNorm PCV ST18C_mmNorm  PCV ST19A_mmNorm PCV ST19F_mmNorm  \\\n",
       "SampleID                                                                        \n",
       "103_V3           0.146465         0.086356          0.035467         0.057453   \n",
       "103_V9           0.146465         0.086356          0.035467         0.057453   \n",
       "103_S1           0.146465         0.086356          0.035467         0.057453   \n",
       "103_V10          0.146465         0.086356          0.035467         0.057453   \n",
       "108_V2           0.366194         0.164958          0.041692         0.063590   \n",
       "\n",
       "         PCV ST23F_mmNorm  median_mmNorm median_mmNorm_DTAPHib  \\\n",
       "SampleID                                                         \n",
       "103_V3           0.300910       0.190854              0.326317   \n",
       "103_V9           0.300910       0.190854              0.326317   \n",
       "103_S1           0.300910       0.190854              0.326317   \n",
       "103_V10          0.300910       0.190854              0.326317   \n",
       "108_V2           0.371471       0.168430              0.172291   \n",
       "\n",
       "          median_mmNorm_PCV  VR_group  \n",
       "SampleID                               \n",
       "103_V3             0.146465       NVR  \n",
       "103_V9             0.146465       NVR  \n",
       "103_S1             0.146465       NVR  \n",
       "103_V10            0.146465       NVR  \n",
       "108_V2             0.164958       NVR  \n",
       "\n",
       "[5 rows x 72 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta = pd.read_csv('../../data/metadata/stool/stool_metadata.csv', index_col='SampleID')\n",
    "meta = pd.concat([meta,\n",
    "                  pd.read_csv('../../data/metadata/stool/stool_abx_usage.csv', index_col='SampleID'),\n",
    "                  pd.read_csv('../../data/metadata/stool/stool_titers_yr2.csv', index_col='SampleID')],\n",
    "                 axis=1)\n",
    "meta['VR_group'] = meta['VR_group'].fillna('Not Measured')\n",
    "meta = meta.sort_values(['BabyN', 'age_at_collection'])\n",
    "meta = meta.loc[~pd.isna(meta['median_mmNorm'])]\n",
    "meta.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f8927715-e07c-416a-a625-563c192b5b9f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(971, 450)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>103_V9</th>\n",
       "      <th>103_S1</th>\n",
       "      <th>103_V10</th>\n",
       "      <th>108_V2</th>\n",
       "      <th>108_V3</th>\n",
       "      <th>108_V4</th>\n",
       "      <th>108_V5</th>\n",
       "      <th>108_V6</th>\n",
       "      <th>108_V7</th>\n",
       "      <th>108_S1</th>\n",
       "      <th>...</th>\n",
       "      <th>264_V5</th>\n",
       "      <th>264_S1</th>\n",
       "      <th>264_S1F</th>\n",
       "      <th>264_V7</th>\n",
       "      <th>264_S2</th>\n",
       "      <th>264_S2F</th>\n",
       "      <th>264_V9</th>\n",
       "      <th>264_V10</th>\n",
       "      <th>264_V11</th>\n",
       "      <th>264_V12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|g__Thermobaculum</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae|g__Acidobacterium</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae|g__Candidatus_Koribacter</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>81.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae|g__Granulicella</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae|g__Terriglobus</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 450 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    103_V9  103_S1  103_V10  \\\n",
       "d__Bacteria|g__Thermobaculum                           0.0     0.0      0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     1.0     0.0      3.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0      0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0      2.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     2.0      1.0   \n",
       "\n",
       "                                                    108_V2  108_V3  108_V4  \\\n",
       "d__Bacteria|g__Thermobaculum                           0.0     0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     2.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     0.0   \n",
       "\n",
       "                                                    108_V5  108_V6  108_V7  \\\n",
       "d__Bacteria|g__Thermobaculum                           0.0     0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     2.0     0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0    81.0     6.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     0.0   \n",
       "\n",
       "                                                    108_S1  ...  264_V5  \\\n",
       "d__Bacteria|g__Thermobaculum                           0.0  ...     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0  ...     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     6.0  ...     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0  ...     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0  ...     0.0   \n",
       "\n",
       "                                                    264_S1  264_S1F  264_V7  \\\n",
       "d__Bacteria|g__Thermobaculum                           0.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     2.0      0.0     0.0   \n",
       "\n",
       "                                                    264_S2  264_S2F  264_V9  \\\n",
       "d__Bacteria|g__Thermobaculum                           0.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0      0.0     1.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0      0.0     5.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     1.0      0.0     0.0   \n",
       "\n",
       "                                                    264_V10  264_V11  264_V12  \n",
       "d__Bacteria|g__Thermobaculum                            0.0      1.0      0.0  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...      0.0     10.0      4.0  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...      1.0      2.0      5.0  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...      1.0     13.0      6.0  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...      1.0     14.0      3.0  \n",
       "\n",
       "[5 rows x 450 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kraken_genus_abunds = pd.read_csv('../../data/stool/kraken_taxa_level_abunds/kraken_genus_abunds.tsv', sep='\\t', index_col=0)\n",
    "kraken_genus_abunds = kraken_genus_abunds[meta.query(\"`gt_2.5` == True\").index]\n",
    "print(kraken_genus_abunds.shape)\n",
    "display(kraken_genus_abunds.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ed06601c-88e5-4ba9-a274-63af571183a6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(320, 450)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>103_V9</th>\n",
       "      <th>103_S1</th>\n",
       "      <th>103_V10</th>\n",
       "      <th>108_V2</th>\n",
       "      <th>108_V3</th>\n",
       "      <th>108_V4</th>\n",
       "      <th>108_V5</th>\n",
       "      <th>108_V6</th>\n",
       "      <th>108_V7</th>\n",
       "      <th>108_S1</th>\n",
       "      <th>...</th>\n",
       "      <th>264_V5</th>\n",
       "      <th>264_S1</th>\n",
       "      <th>264_S1F</th>\n",
       "      <th>264_V7</th>\n",
       "      <th>264_S2</th>\n",
       "      <th>264_S2F</th>\n",
       "      <th>264_V9</th>\n",
       "      <th>264_V10</th>\n",
       "      <th>264_V11</th>\n",
       "      <th>264_V12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>81.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>39.0</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Solibacteres|o__Solibacterales|f__Solibacteraceae</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Acidimicrobiia|o__Acidimicrobiales|f__Acidimicrobiaceae</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Acidothermales|f__Acidothermaceae</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Actinomycetales|f__Actinomycetaceae</th>\n",
       "      <td>24.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>45.0</td>\n",
       "      <td>207.0</td>\n",
       "      <td>27.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>...</td>\n",
       "      <td>3.0</td>\n",
       "      <td>7127.0</td>\n",
       "      <td>1752.0</td>\n",
       "      <td>1144.0</td>\n",
       "      <td>684.0</td>\n",
       "      <td>1817.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>48.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 450 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    103_V9  103_S1  103_V10  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     1.0     2.0      6.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...     0.0     0.0      0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...     0.0     0.0      0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     0.0     0.0      0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...    24.0     9.0     60.0   \n",
       "\n",
       "                                                    108_V2  108_V3  108_V4  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     0.0     0.0     2.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     0.0     1.0    45.0   \n",
       "\n",
       "                                                    108_V5  108_V6  108_V7  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     2.0    81.0     6.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...     0.0    51.0     1.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     0.0     0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...   207.0    27.0    42.0   \n",
       "\n",
       "                                                    108_S1  ...  264_V5  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     6.0  ...     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...     3.0  ...     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...     0.0  ...     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     0.0  ...     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...    16.0  ...     3.0   \n",
       "\n",
       "                                                    264_S1  264_S1F  264_V7  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     2.0      0.0     0.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  7127.0   1752.0  1144.0   \n",
       "\n",
       "                                                    264_S2  264_S2F  264_V9  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...     1.0      0.0     6.0   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...     0.0      0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     1.0      0.0     0.0   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...   684.0   1817.0    32.0   \n",
       "\n",
       "                                                    264_V10  264_V11  264_V12  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...      3.0     39.0     20.0  \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...      0.0      0.0      0.0  \n",
       "d__Bacteria|p__Actinobacteria|c__Acidimicrobiia...      0.0      0.0      0.0  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...      0.0      0.0      0.0  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...     33.0     33.0     48.0  \n",
       "\n",
       "[5 rows x 450 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kraken_family_abunds = pd.read_csv('../../data/stool/kraken_taxa_level_abunds/kraken_family_abunds.tsv', sep='\\t', index_col=0)\n",
    "kraken_family_abunds = kraken_family_abunds[meta.query(\"`gt_2.5` == True\").index]\n",
    "print(kraken_family_abunds.shape)\n",
    "display(kraken_family_abunds.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0cd4ea1f-112a-4f0b-a80f-1a9563a2c0a1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(450, 72)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/var/folders/6t/1w2t3qmd1rx81mfw9sq_tfpr0000gn/T/ipykernel_12569/1022001642.py:2: FutureWarning: Passing a set as an indexer is deprecated and will raise in a future version. Use a list instead.\n",
      "  meta_matched = meta.loc[in_both]\n"
     ]
    }
   ],
   "source": [
    "in_both = set(meta.index) & set(kraken_genus_abunds.columns)\n",
    "meta_matched = meta.loc[in_both]\n",
    "print(meta_matched.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "af902bea-8307-428d-a875-39eef4b38e25",
   "metadata": {},
   "outputs": [],
   "source": [
    "meta_v5 = meta_matched.query(\"VisitCode == 'V5'\")\n",
    "meta_v6 = meta_matched.query(\"VisitCode == 'V6'\")\n",
    "meta_v7 = meta_matched.query(\"VisitCode == 'V7'\")\n",
    "meta_v9 = meta_matched.query(\"VisitCode == 'V9'\")\n",
    "\n",
    "meta_PCV = meta_matched.loc[~pd.isna(meta_matched['median_mmNorm_PCV'])]\n",
    "meta_PCV_v5 = meta_PCV.query(\"VisitCode == 'V5'\")\n",
    "meta_PCV_v6 = meta_PCV.query(\"VisitCode == 'V6'\")\n",
    "meta_PCV_v7 = meta_PCV.query(\"VisitCode == 'V7'\")\n",
    "meta_PCV_v9 = meta_PCV.query(\"VisitCode == 'V9'\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e0151bb-6764-4c59-99c3-a695d0796ae3",
   "metadata": {},
   "source": [
    "## Genus level correlations with median of all titers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "57169c77-5b4e-41cb-a066-c1847d876425",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Pasteurellales|f__Pasteurellaceae|g__Actinobacillus</th>\n",
       "      <td>-0.489087</td>\n",
       "      <td>0.004502</td>\n",
       "      <td>0.957447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Xanthomonadales|f__Xanthomonadaceae|g__Luteimonas</th>\n",
       "      <td>0.475070</td>\n",
       "      <td>0.006003</td>\n",
       "      <td>0.957447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Coriobacteriia|o__Coriobacteriales|f__Atopobiaceae|g__Atopobium</th>\n",
       "      <td>-0.417568</td>\n",
       "      <td>0.017410</td>\n",
       "      <td>0.984797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|f__Ruminococcaceae|g__Ruminococcus</th>\n",
       "      <td>0.386530</td>\n",
       "      <td>0.028868</td>\n",
       "      <td>0.984797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Pasteurellales|f__Pasteurellaceae|g__Aggregatibacter</th>\n",
       "      <td>-0.375472</td>\n",
       "      <td>0.034204</td>\n",
       "      <td>0.984797</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.489087  0.004502   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.475070  0.006003   \n",
       "d__Bacteria|p__Actinobacteria|c__Coriobacteriia... -0.417568  0.017410   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.386530  0.028868   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.375472  0.034204   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.957447  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.957447  \n",
       "d__Bacteria|p__Actinobacteria|c__Coriobacteriia...  0.984797  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.984797  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.984797  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_genus_abunds_v5 = kraken_genus_abunds[meta_v5.index]\n",
    "kraken_genus_abunds_v5 = kraken_genus_abunds_v5.loc[(kraken_genus_abunds_v5 > 0).sum(axis=1) > kraken_genus_abunds_v5.shape[1]*.2]\n",
    "v5_correlations = kraken_genus_abunds_v5.transpose().apply(spearmanr, b=meta_v5['median_mmNorm']).transpose()\n",
    "v5_correlations.columns = ['rho', 'p_value']\n",
    "v5_correlations['p_adj'] = p_adjust(v5_correlations['p_value'])\n",
    "v5_correlations = v5_correlations.sort_values('p_value')\n",
    "v5_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "6bbafdb6-6913-469b-befd-1382a657f7ed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Enterobacteriaceae|g__Shigella</th>\n",
       "      <td>-0.511845</td>\n",
       "      <td>0.001973</td>\n",
       "      <td>0.516984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae|g__Paludisphaera</th>\n",
       "      <td>0.493001</td>\n",
       "      <td>0.003053</td>\n",
       "      <td>0.516984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Pseudonocardiales|f__Pseudonocardiaceae|g__Pseudonocardia</th>\n",
       "      <td>0.478361</td>\n",
       "      <td>0.004215</td>\n",
       "      <td>0.516984</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o__Gloeobacterales|f__Gloeobacteraceae|g__Gloeobacter</th>\n",
       "      <td>0.462296</td>\n",
       "      <td>0.005911</td>\n",
       "      <td>0.522276</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Comamonadaceae|g__Polaromonas</th>\n",
       "      <td>0.444829</td>\n",
       "      <td>0.008390</td>\n",
       "      <td>0.522276</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.511845  0.001973   \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.493001  0.003053   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.478361  0.004215   \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.462296  0.005911   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.444829  0.008390   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.516984  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.516984  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.516984  \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.522276  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.522276  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_genus_abunds_v6 = kraken_genus_abunds[meta_v6.index]\n",
    "kraken_genus_abunds_v6 = kraken_genus_abunds_v6.loc[(kraken_genus_abunds_v6 > 0).sum(axis=1) > kraken_genus_abunds_v6.shape[1]*.2]\n",
    "v6_correlations = kraken_genus_abunds_v6.transpose().apply(spearmanr, b=meta_v6['median_mmNorm']).transpose()\n",
    "v6_correlations.columns = ['rho', 'p_value']\n",
    "v6_correlations['p_adj'] = p_adjust(v6_correlations['p_value'])\n",
    "v6_correlations = v6_correlations.sort_values('p_value')\n",
    "v6_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "fbfe8e12-0392-4276-9fdb-d77bb4fbbd09",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Comamonadaceae|g__Polaromonas</th>\n",
       "      <td>0.427681</td>\n",
       "      <td>0.007398</td>\n",
       "      <td>0.986093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|f__Lachnospiraceae|g__Lachnoclostridium</th>\n",
       "      <td>0.413503</td>\n",
       "      <td>0.009866</td>\n",
       "      <td>0.986093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|g__Paucibacter</th>\n",
       "      <td>0.403081</td>\n",
       "      <td>0.012100</td>\n",
       "      <td>0.986093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Enterobacteriaceae|g__Shigella</th>\n",
       "      <td>-0.396782</td>\n",
       "      <td>0.013648</td>\n",
       "      <td>0.986093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Pectobacteriaceae|g__Pectobacterium</th>\n",
       "      <td>-0.369240</td>\n",
       "      <td>0.022525</td>\n",
       "      <td>0.986093</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.427681  0.007398   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.413503  0.009866   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.403081  0.012100   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.396782  0.013648   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.369240  0.022525   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.986093  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.986093  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.986093  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.986093  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.986093  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_genus_abunds_v7 = kraken_genus_abunds[meta_v7.index]\n",
    "kraken_genus_abunds_v7 = kraken_genus_abunds_v7.loc[(kraken_genus_abunds_v7 > 0).sum(axis=1) > kraken_genus_abunds_v7.shape[1]*.2]\n",
    "v7_correlations = kraken_genus_abunds_v7.transpose().apply(spearmanr, b=meta_v7['median_mmNorm']).transpose()\n",
    "v7_correlations.columns = ['rho', 'p_value']\n",
    "v7_correlations['p_adj'] = p_adjust(v7_correlations['p_value'])\n",
    "v7_correlations = v7_correlations.sort_values('p_value')\n",
    "v7_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "aca564d7-f291-4a2e-b212-ea974594f62e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Spirochaetes|c__Spirochaetia|o__Spirochaetales|f__Spirochaetaceae|g__Spirochaeta</th>\n",
       "      <td>0.510163</td>\n",
       "      <td>0.001256</td>\n",
       "      <td>0.276897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacillales|f__Planococcaceae|g__Planococcus</th>\n",
       "      <td>0.492807</td>\n",
       "      <td>0.001943</td>\n",
       "      <td>0.276897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Streptosporangiales|f__Nocardiopsaceae|g__Nocardiopsis</th>\n",
       "      <td>0.486859</td>\n",
       "      <td>0.002245</td>\n",
       "      <td>0.276897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|g__Ndongobacter</th>\n",
       "      <td>0.485478</td>\n",
       "      <td>0.002321</td>\n",
       "      <td>0.276897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Nitrosomonadales|f__Nitrosomonadaceae|g__Nitrosomonas</th>\n",
       "      <td>0.482673</td>\n",
       "      <td>0.002481</td>\n",
       "      <td>0.276897</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Spirochaetes|c__Spirochaetia|o__...  0.510163  0.001256   \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.492807  0.001943   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.486859  0.002245   \n",
       "d__Bacteria|p__Firmicutes|g__Ndongobacter           0.485478  0.002321   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.482673  0.002481   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Spirochaetes|c__Spirochaetia|o__...  0.276897  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.276897  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.276897  \n",
       "d__Bacteria|p__Firmicutes|g__Ndongobacter           0.276897  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.276897  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_genus_abunds_v9 = kraken_genus_abunds[meta_v9.index]\n",
    "kraken_genus_abunds_v9 = kraken_genus_abunds_v9.loc[(kraken_genus_abunds_v9 > 0).sum(axis=1) > kraken_genus_abunds_v9.shape[1]*.2]\n",
    "v9_correlations = kraken_genus_abunds_v9.transpose().apply(spearmanr, b=meta_v9['median_mmNorm']).transpose()\n",
    "v9_correlations.columns = ['rho', 'p_value']\n",
    "v9_correlations['p_adj'] = p_adjust(v9_correlations['p_value'])\n",
    "v9_correlations = v9_correlations.sort_values('p_value')\n",
    "v9_correlations.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a06fb90e-1596-47ba-a582-e516a30f6bf2",
   "metadata": {},
   "source": [
    "Nothing is significant at the genus level."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "04be123e-d2e2-493e-8734-78312dd51d6d",
   "metadata": {},
   "source": [
    "## Family level correlations with median of all titers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "b54077c5-5752-4b3b-a86c-0414566048b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Synergistetes|c__Synergistia|o__Synergistales|f__Synergistaceae</th>\n",
       "      <td>0.450521</td>\n",
       "      <td>0.009665</td>\n",
       "      <td>0.790964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfuromonadales|f__Desulfuromonadaceae</th>\n",
       "      <td>0.437739</td>\n",
       "      <td>0.012225</td>\n",
       "      <td>0.790964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Propionibacteriales|f__Propionibacteriaceae</th>\n",
       "      <td>-0.416950</td>\n",
       "      <td>0.017594</td>\n",
       "      <td>0.790964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfovibrionales|f__Desulfovibrionaceae</th>\n",
       "      <td>0.410009</td>\n",
       "      <td>0.019774</td>\n",
       "      <td>0.790964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Verrucomicrobia|c__Verrucomicrobiae|o__Verrucomicrobiales|f__Akkermansiaceae</th>\n",
       "      <td>0.351681</td>\n",
       "      <td>0.048402</td>\n",
       "      <td>0.893075</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Synergistetes|c__Synergistia|o__...  0.450521  0.009665   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.437739  0.012225   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria... -0.416950  0.017594   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.410009  0.019774   \n",
       "d__Bacteria|p__Verrucomicrobia|c__Verrucomicrob...  0.351681  0.048402   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Synergistetes|c__Synergistia|o__...  0.790964  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.790964  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.790964  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.790964  \n",
       "d__Bacteria|p__Verrucomicrobia|c__Verrucomicrob...  0.893075  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_v5 = kraken_family_abunds[meta_v5.index]\n",
    "kraken_family_abunds_v5 = kraken_family_abunds_v5.loc[(kraken_family_abunds_v5 > 0).sum(axis=1) > kraken_family_abunds_v5.shape[1]*.2]\n",
    "v5_correlations = kraken_family_abunds_v5.transpose().apply(spearmanr, b=meta_v5['median_mmNorm']).transpose()\n",
    "v5_correlations.columns = ['rho', 'p_value']\n",
    "v5_correlations['p_adj'] = p_adjust(v5_correlations['p_value'])\n",
    "v5_correlations = v5_correlations.sort_values('p_value')\n",
    "v5_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "85eb8926-3f0b-4ff3-9cfa-df94107d52c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae</th>\n",
       "      <td>0.545752</td>\n",
       "      <td>0.000843</td>\n",
       "      <td>0.150818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o__Gloeobacterales|f__Gloeobacteraceae</th>\n",
       "      <td>0.462296</td>\n",
       "      <td>0.005911</td>\n",
       "      <td>0.519828</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Alteromonadales|f__Shewanellaceae</th>\n",
       "      <td>-0.435095</td>\n",
       "      <td>0.010121</td>\n",
       "      <td>0.519828</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfarculales|f__Desulfarculaceae</th>\n",
       "      <td>0.427765</td>\n",
       "      <td>0.011616</td>\n",
       "      <td>0.519828</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Rhodocyclales|f__Azonexaceae</th>\n",
       "      <td>-0.386339</td>\n",
       "      <td>0.024014</td>\n",
       "      <td>0.797001</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.545752  0.000843   \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.462296  0.005911   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.435095  0.010121   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.427765  0.011616   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact... -0.386339  0.024014   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.150818  \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.519828  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.519828  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.519828  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.797001  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_v6 = kraken_family_abunds[meta_v6.index]\n",
    "kraken_family_abunds_v6 = kraken_family_abunds_v6.loc[(kraken_family_abunds_v6 > 0).sum(axis=1) > kraken_family_abunds_v6.shape[1]*.2]\n",
    "v6_correlations = kraken_family_abunds_v6.transpose().apply(spearmanr, b=meta_v6['median_mmNorm']).transpose()\n",
    "v6_correlations.columns = ['rho', 'p_value']\n",
    "v6_correlations['p_adj'] = p_adjust(v6_correlations['p_value'])\n",
    "v6_correlations = v6_correlations.sort_values('p_value')\n",
    "v6_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "1e9aadb9-5744-4601-bef2-56c3895824d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Thermodesulfobacteria|c__Thermodesulfobacteria|o__Thermodesulfobacteriales|f__Thermodesulfobacteriaceae</th>\n",
       "      <td>0.399964</td>\n",
       "      <td>0.012846</td>\n",
       "      <td>0.986259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Yersiniaceae</th>\n",
       "      <td>-0.365378</td>\n",
       "      <td>0.024087</td>\n",
       "      <td>0.986259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Micrococcales|f__Intrasporangiaceae</th>\n",
       "      <td>-0.332334</td>\n",
       "      <td>0.041494</td>\n",
       "      <td>0.986259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Rhizobiales|f__Methylocystaceae</th>\n",
       "      <td>0.325585</td>\n",
       "      <td>0.046074</td>\n",
       "      <td>0.986259</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Cyanobacteria|o__Synechococcales|f__Leptolyngbyaceae</th>\n",
       "      <td>0.325235</td>\n",
       "      <td>0.046322</td>\n",
       "      <td>0.986259</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Thermodesulfobacteria|c__Thermod...  0.399964  0.012846   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.365378  0.024087   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria... -0.332334  0.041494   \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac...  0.325585  0.046074   \n",
       "d__Bacteria|p__Cyanobacteria|o__Synechococcales...  0.325235  0.046322   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Thermodesulfobacteria|c__Thermod...  0.986259  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.986259  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.986259  \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac...  0.986259  \n",
       "d__Bacteria|p__Cyanobacteria|o__Synechococcales...  0.986259  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_v7 = kraken_family_abunds[meta_v7.index]\n",
    "kraken_family_abunds_v7 = kraken_family_abunds_v7.loc[(kraken_family_abunds_v7 > 0).sum(axis=1) > kraken_family_abunds_v7.shape[1]*.2]\n",
    "v7_correlations = kraken_family_abunds_v7.transpose().apply(spearmanr, b=meta_v7['median_mmNorm']).transpose()\n",
    "v7_correlations.columns = ['rho', 'p_value']\n",
    "v7_correlations['p_adj'] = p_adjust(v7_correlations['p_value'])\n",
    "v7_correlations = v7_correlations.sort_values('p_value')\n",
    "v7_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f11775af-f323-441f-a848-9dc3e661c8ae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacillales|f__Planococcaceae</th>\n",
       "      <td>0.484540</td>\n",
       "      <td>0.002373</td>\n",
       "      <td>0.248471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Streptosporangiales|f__Nocardiopsaceae</th>\n",
       "      <td>0.471896</td>\n",
       "      <td>0.003192</td>\n",
       "      <td>0.248471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Cellvibrionales|f__Cellvibrionaceae</th>\n",
       "      <td>0.465753</td>\n",
       "      <td>0.003671</td>\n",
       "      <td>0.248471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Nitrosomonadales|f__Nitrosomonadaceae</th>\n",
       "      <td>0.458655</td>\n",
       "      <td>0.004303</td>\n",
       "      <td>0.248471</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Lactobacillales|f__Aerococcaceae</th>\n",
       "      <td>0.429960</td>\n",
       "      <td>0.007907</td>\n",
       "      <td>0.320405</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.484540  0.002373   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.471896  0.003192   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.465753  0.003671   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.458655  0.004303   \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Lactoba...  0.429960  0.007907   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.248471  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.248471  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.248471  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.248471  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Lactoba...  0.320405  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_v9 = kraken_family_abunds[meta_v9.index]\n",
    "kraken_family_abunds_v9 = kraken_family_abunds_v9.loc[(kraken_family_abunds_v9 > 0).sum(axis=1) > kraken_family_abunds_v9.shape[1]*.2]\n",
    "v9_correlations = kraken_family_abunds_v9.transpose().apply(spearmanr, b=meta_v9['median_mmNorm']).transpose()\n",
    "v9_correlations.columns = ['rho', 'p_value']\n",
    "v9_correlations['p_adj'] = p_adjust(v9_correlations['p_value'])\n",
    "v9_correlations = v9_correlations.sort_values('p_value')\n",
    "v9_correlations.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e833e94-d242-4ef7-a560-b87dc1387e8b",
   "metadata": {},
   "source": [
    "There are three significant results but they are all ocean bacteria. These are likely artifacts of an old and incomplete Kraken database."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a7bd495-b262-4c6a-b3ad-da126c007d91",
   "metadata": {},
   "source": [
    "### Dig into genuses within Erythrobacteraceae"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "a8dcba3c-401b-413d-b15d-abe735616cd4",
   "metadata": {},
   "outputs": [],
   "source": [
    "erythrobacteraceae_genuses = [i for i in kraken_genus_abunds_v9.index\n",
    "                              if 'd__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Sphingomonadales|f__Erythrobacteraceae' in i]\n",
    "erythrobacteraceae_genuses_v9 = pd.concat((kraken_genus_abunds_v9.loc[erythrobacteraceae_genuses].transpose(), meta_v9['median_mmNorm']), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "7c98825e-77bc-4cc6-ab98-a78cfd95ce20",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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UFCQUlJSlJCQYHXbv3+/WrRoocaNG3uwMgQHBysuLs6l2759+xQUFOShimqPw4cPa/To0crIyNCaNWvUvn17SbSJJ+zYsUPXXXedHA6H1c3hcKhevXpq164d7VHF3n//fW3btk1hYWEKCwvThx9+qA8//FBhYWGsH0AVIVTAli699FKFhoZqwYIFysjI0JEjR7RkyRJFRkZ6urRa79prr1VCQoKWL1+u3Nxcff/991q3bp1Gjx7t6dJqtNTUVN16663q1q2bli5dqqZNm1r9aJOq1759e2VnZ+vpp5+Ww+HQ0aNHtWjRIkVGRmrw4MG0RxX7+OOPtWPHDm3fvl3bt2/XsGHDNGzYMG3fvp31A6gidYwxxtNFAEVJSEjQvHnztHXrVnl5eWnkyJGaNWuWy42qqBrt27fXihUrFBERIUmKjY3V/PnztXfvXjVt2lRRUVEaNWqUh6us2ZYtW6aFCxfK19dXderUcem3c+dO2sQD9u3bpwULFig2NlaNGzfW8OHDradz0R6eVfCOioULF0pimwVUBUIFAAAAALdw+RMAAAAAtxAqAAAAALiFUAEAAADALYQKAAAAAG4hVAAAAABwC6ECAAAAgFsIFQAAAADcUitChdPp1JEjRzxdRrVx8uRJZWZmerqMEh08eNDTJaAMqst6mJ6erqSkJE+XAdRY1XkdO3TokKdLqHXs9ltfXZeBqpiPboWKmJgYTZw40e0iJk6cqI4dOyokJERdu3ZVSEiIbrrpJm3bts3tcUvSjBkz9N5775X783feeaf+/e9/l2rYmJgY602ela1///7q1KmTQkJCrHnXs2dPLVq0SPn5+eUaZ0JCggYPHlxhG/z27dtr69atFTKus3355Ze64447yv35Dz74QEOHDi3VsH/88Yfat29f7mmVR2RkpDp16qRTp065dN+6dWupa6mo9bOiuLsenm3u3LmVtp5de+21iouLK/fnQ0JCtH379lINO3HiRL3zzjvlnlZZHDt2TLNnz9af//xnde3aVf369dM//vEPpaWllerz77zzjvr373/e/o888ogeeeSRiiq32urfv3+p27Sito/9+/e3xpOZmak77rhDXbp00S233FIh4z77d+bsf6Vdzs919jpW0nJVVmXZRpbVokWL9OKLL1bKuD3pnXfeqfLfiri4OF1xxRW69957C/U7e/v+66+/atiwYVVaW3HOXQYqeh+nLNuPsqiq+Vi30qdQSlOmTNH9998vScrNzdWrr76qe++9V19//bUaN27s1riTk5Pd+vyrr77q1ucr0+OPP65Ro0ZZf//222+67bbb5Ovrq6lTp5Z5fNnZ2dXiLEVKSorceRn8iBEjNGLEiAqsqOL89NNPOn78uHr37q2VK1dqxowZni6pQri7HlYVd+vcuXNnBVVScfLz8zV58mT16NFDH3/8sfz9/XXkyBE9+OCDmjp1qpYvX+72NObNm+d+oXDb7t279c0332jr1q0KCAiokHGe+zvjruqyLThXda3bjlauXKlRo0bpww8/1IEDB3TZZZcVOVx6erpyc3OruLrzq67LQFXNxzKdqdixY4dGjx6trl276uabb9Yff/xRKUXVq1dPEydOVEZGhg4cOCBJysjI0MMPP6xBgwapa9eu6tWrl8vZg6SkJM2aNUvdu3dXRESEZsyYodTUVD300EPavn27XnrpJd1zzz2SpMOHD+uee+5RRESE+vXrp2effVYOh0PSmcQ+atQoTZ48WWFhYVq3bp0mTpyomJiYUtVxtq1bt6p379567rnnFBERoYiICM2fP9+aVmVo3769unfvrl9//VXSmSOhc+fOVb9+/dS3b19lZGTot99+01133aXw8HD17t1bjz32mNLT0+V0Oq0kO2zYMG3YsEGStH79eg0fPlyhoaEaNWqUvvnmG2t62dnZevLJJ9WnTx91795dEydO1K5du1xq+uabbzRkyBBFRERo6tSpLkff16xZo1GjRikiIkIhISGaMmWKy1mS//znP7r22msVEhKiUaNGacuWLdq6daseffRRxcfHKyQkRCdOnJDD4dBzzz2nAQMGKDw8XHfddZfLKcr27dvrn//8pyIiInTPPfcUOjpWUh1nO9+yVlFWrlyp6667TuPHj9cbb7yhrKysIocrOIPy3//+Vz169FBoaKhmz56tjIwMa5jTp0/r4YcfVs+ePRUREaFnn33W6nfixAlNnz5d/fv3V5cuXTRgwACtWbPG6t++fXu9+uqr6tu3rzVPTpw4Iano9aS4ZaGs66Ekff755xo1apS6deumwYMHa/ny5S5n4JKSknTvvfeqe/fuGjlypDZt2mT1279/v6ZMmaK+ffuqc+fOuv766/XVV19Z/X/55RdNnDhRISEh6tmzp5577jkZYzR48GBJ0l133aVXXnlFkvTdd98pMjJSYWFhGjp0qD744ANrPHPnztXUqVM1ZMgQXX311Tp8+LDLkauS6jjX22+/raFDh6pbt24aPny4y7TckZycrN9//11Dhw6Vv7+/JKl169Z6+OGH1bJlSzmdTknFt7kk5eXlafHixerbt6+6deumhx9+WHl5eda8KDi6GBMTo6lTp2rWrFkKCwtT79699fTTT1vjyc7O1qOPPqrw8HD16dNH//rXv1yOth89elTTp0/XNddcox49emjmzJk6efKkpDPb1f79++vVV1+1lvtnnnlGX3zxhQYPHqyQkBDdf//91rJU0jaqYB0q+OzNN9+s3377zepf3LbBGKN///vf6tmzp8LCwrRo0SJrXkolr2Nny8jI0Lx589SnTx9dc801mjFjhhISEqz+MTEx6tOnj8LDwzV69Gh98cUXhcbx+eef6/bbb5ck9evXT2+//XYxS0XF6d+/vx555BH16NFDI0eO1OTJk/X3v//dZZgpU6boueeeK3IdK2m5OncdK275KPDyyy+rT58+6t27t5566ilreXA4HFq0aJGGDBmikJAQXXPNNfrHP/5hHaTKzMzUvHnzdM011ygsLEx33XWXjh49qhdeeEHr1q3TunXrrANSCQkJmjVrlnr06KGePXvqkUcesba/W7duVZ8+fTRz5kyFhYXp5ZdfLvd+TEnTkkr+DSvud/xcv/76q8aNG6eQkBDdcMMNevHFFyv0bFJ6ero++OAD3XLLLbr22mu1bNmyIoc7cuSI7rrrLklnzgDv3LlTxhitWLFCgwcPVlhYmMaPH6+ff/7Z+sy5y2J+fr61ve/evbsGDRqk5cuXW+0dExOjyZMna/To0QoPD9fzzz+v0NBQ5eTkWOP8+OOP1a9fvyKXAUn69ttvdcMNNygkJESRkZHau3evpKKXgfz8fL388ssaOHCgQkNDFRkZqc2bN7t8719++UWjRo1SeHi47rjjDpfLlr788kvdfPPNuuaaa9SlSxdNmDDBpf+6des0bNgwhYSEaMiQIdqwYUOFzcdSMaWUlJRkwsLCzEsvvWQcDofZvn276datm5kwYUJpR3FeEyZMMNHR0dbfOTk5ZtmyZWbgwIEmJyfHGGPMo48+am699VaTmppq8vPzzccff2yCg4PNwYMHrXFMmTLFJCUlmfT0dDN58mQzY8aMQuM/ffq06devn1m8eLHJzs428fHxJjIy0ixevNgYY8zatWtNcHCweeedd0xOTo7Jyspy+XxJdURHR5s5c+YYY4z5/vvvTXBwsJk2bZpJT083Bw4cMAMHDjTPPvus2/PMGGP69etn1q5da/3tcDjM999/b7p3725WrFhhffdevXqZ48ePm9TUVJOUlGTCw8PNwoULTVZWljl58qSZNGmSueeee4wxxhw5csQEBwebI0eOGGOM+frrr01oaKjZtm2bycvLM19++aXp2rWr2bt3rzHGmDlz5pjhw4ebgwcPmpycHLN8+XITEhJijh49aowxJjg42AwfPtz88ccfJj093dxzzz1m0qRJxhhjfvrpJ9OlSxfz008/GWOMOXbsmBk0aJA1f9auXWvCw8PNjh07jNPpNG+99Zbp0qWLSU5ONmvXrjX9+vWzvvvChQvNyJEjzeHDh012draJiYkx/fv3N9nZ2VYdd911l8nMzDSpqakuny+pjoJ5UqC4Zc1dCQkJplOnTmbfvn0mPz/fDBkyxPz3v/+1+hcsU2fXNWHCBJOYmGhOnjxpbrrpJjNr1ixjzJllsX379ua9994z+fn5ZsuWLaZ9+/Zmx44dxhhj7rzzTjNr1iyTmZlp8vLyzGuvvWY6d+5sMjIyrHk2dOhQc/jwYZOWlmbuueceM27cOKttzl1PSloWyrIebtmyxXTo0MGsX7/e5Obmmp9//tn07t3bLFu2zBhzZrm78sorzSeffGJyc3PNu+++azp06GAOHTpkjDFmyJAhZvHixcbhcJicnBwzf/5807t3b2OMMcnJySY8PNzExMSYnJwcc+jQIdO7d2+zevVq63t///33xhhjdu/ebTp37mw++eQTk5eXZ3788UcTERFhNm3aZNXRtWtX89tvv5nU1NRCny+ujoJ5UrAOr1271nTr1s189913Ji8vz3z33XemW7du5tNPP3V3sTLGGDNp0iTz5z//2TzxxBPms88+MydPniw0TGna/KWXXjK5ubkmLi7OdOnSxaxbt86aFwXbvoJl79133zV5eXnm66+/Nu3btzc7d+40xhjz97//3dx4440mPj7eZGRkmNmzZ1vzzeFwmEGDBpkHHnjApKWlmdTUVPPAAw+YG2+80eTm5lrrwIIFC4zD4TBff/21CQ4ONrfffrtJSUkxhw8fNt27dzfvvvuuVVdJ26ixY8eakydPmrS0NHPbbbeZyZMnG2NK3ja8/fbb5uqrrzY///yzycnJMU8//bQJDg622rQ061jBsnL//febyZMnm4SEBJORkWEefvhhM3bsWGvd7dGjhzlx4oTJz883q1evNhEREcbhcBhjzvwWFIzn7G1ERTj3d+Z8w9xwww0mNTXVpKammvXr15uwsDDr9/vUqVOmQ4cO5vDhw4W+d2mWq7PXsdIuHzNnzjQZGRnm4MGDZuDAgeb55583xhjz8ssvm6FDh5oTJ04YY4zZsWOHueqqq8x3331nTS8yMtLEx8ebnJwcM3fuXDNmzBirX8Ey7nQ6zU033WRmz55t0tPTTVJSkpkyZYr1W1BQx/PPP28cDodJT08v935MSdMqaTkt6Xd87dq11r5cenq6ueaaa8y//vUvk5OTY/bs2WP69u3r8nvrrmXLllnzdOfOnaZz584mMTHR6n/2fD53eV65cqXp27ev2b17t3E4HObtt982YWFh5tSpU8aYwsvi8ePHTWhoqFm5cqVxOBwmLi7OXHvttdb2Pjo62lxxxRXmu+++MxkZGSYnJ8d0797drF+/3prmlClTzHPPPVeoNmP+b/tx6tQpk5WVZe68805r+1HUMhAdHW169+5tfv75Z5Obm2vWr19vOnbsaLVdv379TO/evc2ePXtMdna2eeSRR8ygQYNMbm6uOXbsmOnYsaP54osvjDFn9svHjx9v/eZ///33pmPHjubrr782TqfTbNy40XTo0MHExcW5PR9Lq9Sh4p133jG9evUy+fn5Vrf58+dXWKjo2LGjCQ0NNaGhoeaKK64w7du3d9mZSkhIMMnJycbpdJr4+Hjz1VdfmeDgYLNt2zbzxx9/mODgYPP7779bw588edJaYc7emVm/fr3p0aOHy/fYvHmzCQkJMcacWbk6dOhgnE6nS30Fny+uDmMKh4r27dubpKQka1xvvPFGha2c/fr1M507d7bmW2hoqBk6dKhZsmSJ9f0mTJhgHnroIeszb7/9tunRo4fJy8uzusXFxZng4GBz8uTJQqHizjvvtHb0CjzwwANm3rx5Jjs723To0MF8/fXXLv1Hjx5tXnrpJWPMmRXus88+s/r9/vvvJjg42Bw/ftxkZWVZ00lJSTE//fSTufnmm83cuXOt2p9++mmXcf/4448mKyvLJRTk5+ebrl27Wjt6Bd169eplPv74Y6uO999/3+p/9udLquPsUFHSsuauF154wdxxxx3W36+//roZMGCAtTwWFSp++eUXa/jNmzebjh07mpycHBMdHW2GDRvmMv4ePXqY9957zxhjzPHjx016errJzc01hw8fNm+++aYJDg522dk6e4e2oO2OHDlSaD0pzbJQlvVw9uzZZurUqS7jWrlypRk8eLAx5syGPSoqyqX/2LFjzYsvvmiMMebw4cMmJyfH5OTkmN9//93ExMSY9u3bG2OK3pbt37/fHDt2zPreBTs8jz76aKHA+PTTT5spU6ZYddx2220u/c/+fHF1FMyTgh228ePHm0WLFrmMa9GiRdYPlLtycnLMypUrza233mq6dOligoODzYgRI1zWm5LavFu3bi7zbezYseaFF16w5sXZoaKgrQr07NnTvPvuu8bhcJguXbq4TDc9Pd1ceeWV5vvvvzffffedufLKK016enqh/jt37rTWgYKdkLy8vEJ1jx8/3sTExJR6G/Xhhx9a/d58803Tv39/Y0zJ24YJEyaYZ555xvpsXl6eiYiIsNq0NOvY999/bxISEkxwcLDZv3+/Na7MzExz1VVXmdjYWLNjxw7TsWNHExMTY37++WeTl5fn0g6VHSrO/Z0JDQ112bb069fPLFmyxPo7JyfHhIeHm48++sgYY8xrr73msq9wbqgoabk6ex0rzfLRvn17lx2hN954wwwaNMgYc6YdT506ZfLz882JEyfMd999Z4XQnJwc07FjR7N582brs6mpqWbXrl1WLQXL+E8//WSuuuoqKyAa83/rS1JSktUOx48ft/qXdz+mpGmVtJwW9zte0AYF7fP++++bnj17uuwDrVy5ssL2W/Lz882gQYNcdtpvuukmExMTY/1dXKgYMmSIFQgKjB071ixdutQYU3hZfPnll60AU+CNN96wlt/o6Ghz7bXXuvR//PHHzd13322MOdNmZwfiokJFwX5GwbgHDhzoUvvZy0CfPn3MypUrXaY3depU8/e//92qf/ny5Va/gu3Ajz/+aB0EM+bMMv/rr7+av/zlL2bixInGGGPmzp1rHnjgAZdx//TTTyYtLc3t+Vhapb6n4sSJE7r44otVp04dq1ubNm20e/fu0o6iWHfffbd1T4XT6dQ333yjmTNnSpImTJigxMREzZ8/X7/++qsuueQSdezYUdKZa4ULLqdp1aqVNb5mzZqpWbNmhaZz9OhRJSUlqXv37lY3Y4xyc3OVmJhofdbLq+grw4qroyhNmjTRBRdcYP198cUXFzpN645HH320xGtdL7roIuv/iYmJatmypby9va1ul1xyiaQz8yYwMNDls0ePHtW2bdu0evVqq5vT6dTVV1+t1NRU5ebmWp8/e3xnXxp3dv+WLVtKOrM8XXDBBVqxYoXWrVsnPz8/tW/fXhkZGdZpyVOnTlnDF+jWrVuh75eUlKTMzExNmzbNpd1yc3N19OjRIufD2by8vIqt42xlWdbKKi8vT2+88YbS0tIUEREh6cxylZaWps8++8y6bOBcf/rTn6z/X3zxxXI4HEpJSZGkQtdU+/j4WJdnHDlyRE8++aQOHjyoSy+91BrP2cvy2eMuaIuCeXD2elLaZaFASethYmKirrzyykLjOrs9z53WxRdfbF2qs2fPHkVFRenUqVNq27atmjZt6rJcnbstu/zyywvVWFDn999/r7CwMKub0+lUmzZtrL/Pt1yVVMe5EhIS1Lp160Lf+csvvzzv+MvCx8dHt9xyi2655RY5nU7t2bNHr7/+uu655x6tW7fOmgfFtXmTJk1c5lu9evVcLvc527nrRL169ZSfn6+UlBRlZWW5rEONGjWytpOJiYm64IIL1KhRI5f+AQEBLtuoguELtmUFl3VJZ9ZpY0ypl8uzt3t169a12qikbcPJkyd18cUXW5/19vZ22WaVZh2TZC3XY8aMcenu7e2tP/74Q9ddd51iYmL03//+V6+++qoaNGigiRMn6t577z3vb1VFKuvvjI+Pj4YNG6b3339f1113nd59911Nnjz5vJ8tabk69zespOXD39/fZXk4e9uQlZWlefPm6YcfflCLFi101VVXyRij/Px8paamyuFwuLShv7+/OnXqVKjmP/74Q06nU3369HHp7uPj4/KUu3NrL89+zIYNG4qd1hVXXFHsclrc7/i5jh8/rpYtW7osV+dul9yxadMmHTx4UI899pgef/xxSWcuUSy4RKd+/frFfv7o0aNatGiRFi9ebHXLy8uz5qXkOs+PHj2qX375xWUbnp+f77IPdO42fNSoURo7dqwSExP1wQcfqFu3bsXOg7N/Z4vaJp49/vNt5/fs2ePydwFfX18FBAToxIkTCgkJ0Ycffqg33nhDderUUXBwsDIyMlS37pld+ZMnT+qqq65yGXfnzp2LrLms87G0Sh0qWrRooaNHjyo/P99a2I4fP17mCZaGt7e3dV3pxo0bNWHCBE2bNk39+/fX0qVLVbduXSUnJ+utt96SJGujHh8fr0svvVSStG/fPn344YeaPn16oe/Rpk0bffzxx1a3jIwMJSYmqmnTppLksnE7V3F1FCU9PV1ZWVny9fWVdGZDdO6OcmU7+/u0atVK8fHxcjqd1kp1+PBhSWc2YOfu8LRo0UIjR47U3XffbXWLj49XgwYNFBAQoPr16+vIkSNq27at1f/w4cMu11+ePHlSV1xxhSRZG9tLLrlEy5cv17fffqt169ZZP+oF19tLZ9r12LFjLvU8++yzhW6wvuCCC1S/fn299tpr6tq1q9X9999/V/PmzYucD2crqY6zlWVZK6vPPvtMDodD69evd9ngPffcc1q2bNl5Q8WJEyesHcI//vhDvr6+LkG2KLm5uZoyZYoeeOABjR8/XnXq1NHPP/9c6Br+EydOKDg42Bq3dGZH88CBAy7zMzAwsFTLQoGS1sNWrVpZy2WBI0eOuOyonhvOjxw5og4dOujEiROaNm2ann/+eWvan3zyiT799FNr2seOHZMxxvoOn3/+uTIyMjRy5MhCdd54440uNyGfPHnSZT0533JVUh3nuuSSS0r8zuX11ltv6fnnn9dXX30lb29veXt7q0OHDpo/f74+//xz7d2711qGimvzinDhhReqQYMGio+Pt6aZmZlp3QDZqlUrJScnKyMjw9pxTE9PV3Jysss2qrjtdIGyLpfnKmnb0KJFC5cdSGOMtVyWdh2TZG2nPvroI5f23rdvn1q3bq34+HhdeOGFWrp0qRwOh7Zs2aL77rtPHTp0UN++fUv8HlXh3PYYPXq0xowZo507d+qPP/447/arrOMuzfKRkZGhzMxM+fn5STqzHhXsrD/88MNq0qSJvvnmG9WvX1/5+fnWwY0LL7xQPj4+OnbsmLVsJiYm6pVXXilyX6JBgwbaunWrtb12OBw6cuSI/vSnP+nHH38sVHt592N69+5d7LRee+21EpfT8/2On6tly5aKj4932T7Gx8eXopVKZ9WqVRo7dqyioqKsbrm5uRo1apTee+89jR07ttjPt2jRQlOnTnV5euPhw4ddduzPnuctWrRQRESEli5danVLTk7W6dOnixxekjp27Kh27drpk08+0fr1691+Mta5y++5j1Y/cuSIyw782b9tGRkZSk5OVqtWrfTRRx9p5cqVWr16tXWA4h//+Id1D8fFF19cqK3O3S8qUNb5WFqlPsTRv39/GWMUExMjh8Ohn3/+uVJvAvvpp5+0detWa2VPT09XgwYN5O3traSkJP3zn/+UdGZhbN68uXr06KEnn3xSaWlpysjI0FNPPWU1nI+Pj9LT0yWduXnt9OnTevXVV+VwOJSWlqY5c+ZoxowZpZqBxdVRFKfTqUWLFiknJ0e///67li5dqsjISLfnT3kVHOlYvHixsrOzderUKc2fP19XX321WrVqZR0lKLgBbMyYMVqxYoV1Y2NsbKz1xAYvLy+NHj1azzzzjA4dOiSHw6H//Oc/2rdvn8uCGhMToxMnTig1NVULFy7UoEGD1LRpUyth16tXT3l5eXr//fe1efNma16OGjVKb775pnbt2qX8/HytXbtWq1atskJEVlaW8vLy5OXlpcjISD399NM6fvy48vPz9e6772rYsGGlep50SXWcraRlzR0rV67U8OHD1apVK7Vo0cL6N3HiRO3cuVM7duwo8nNPP/20MjIydOLECUVHR+uGG25QvXr1ip1Wbm6usrOz1aBBA9WpU0fx8fF66qmnrH4FXnjhBZ06dUppaWlatGiRevXq5RLUCpRmWSjLejh69Gh9+eWX+uijj+R0OvXrr7/qlVde0ejRo61pfvHFF9q4caNyc3P11ltvaf/+/Ro+fLhOnz4tp9NpBfl9+/bphRdekHTmh7hv377Ky8vTv//9bzkcDh0+fFgLFiywbsw7u87IyEh9+OGH+uabb5Sfn6+DBw9qwoQJeu2110psz5LqOFdkZKTefPNNbdmyRU6nU99//73efPNNl+9cXn379lVOTo4effRRHTx4UE6nUykpKdYNkuHh4dawpW3z8ipYXwu2C1lZWXriiSeso3udOnVSu3bt9Oijjyo9PV3p6el67LHH1KZNmyLPVJY0rdJso86npG3DTTfdpLfeeks7d+5Ubm6uXnzxReuIc2nXMenMdqVv376aP3++kpOTrXFFRkYqLS1NsbGxuvPOO7Vnzx75+PjowgsvlKQSDx540lVXXaV27dpp3rx5uv766631QHJdx8qqNMuH0+nUwoULlZmZqf3792vp0qW6+eabJZ1p0/r168vLy0sZGRl68sknlZGRodzcXHl5eWnkyJHWspmTk6N//etf+t///qcGDRq41N25c2f96U9/0sKFC3X69GllZ2drwYIFuu2228579q68+zElTauk5bS43/FzFezrFWwfC/ZbKsLhw4e1adMmjRs3zuU3rnXr1rrhhhu0bNmyQgc2C/ZJCub7mDFj9OKLL2r//v2SpM2bN2vo0KH64Ycfipzm8OHD9b///U8ffPCB8vLydPLkSd1zzz1auHBhsbWOGjVKb731lg4ePKhBgwZZ3d1ZdqUz24yXX35Zv/zyi5xOpz766CN9+eWXuvHGG61hXnvtNf3+++/KysrS/PnzdeWVV6pjx45KT0+Xl5eXGjRoIGOMNm3apPfee89q5xtvvFGfffaZ9Xu1efNmxcTEqHHjxm7Px9Iqdajw9/fX0qVLtWXLFoWHh+uhhx5y68jDuV566SWX51/PnDlTkyZNsu5Yf+KJJ7RhwwZ169ZNo0aNUvPmzXXVVVdZCW3x4sVq1KiRhgwZogEDBqhp06bWqbWRI0dq7dq1Gj9+vBo1aqTly5dbT2YaOHCgvLy8Sv3s6ZLqKEqTJk00YMAATZo0STfeeKPuvPNON+dW+TVu3FjLli3T3r171adPHw0bNkytWrXSc889J+nMkb1rr71WY8eO1erVq3XdddfpgQce0IMPPqhu3bpp2rRpuu2226zk/te//lU9e/bUbbfdpoiICH300UdaunSpy+PhevXqpTFjxmjQoEEKDAzU/PnzJUmTJ0/WxRdfrH79+qlXr1764IMPNH78eGteDh8+XPfff79mz56tsLAwvfnmm3rllVfUtGlTde/eXRdeeKG6d++u3377TXPmzFGXLl00fvx4hYWFafny5YqOji50KrAoJdVxruKWtfLas2ePtm/fXuQlBldddZU6dux43h3ZNm3aaNiwYRoxYoRCQkL04IMPljg9Pz8/LViwQC+88IJCQkI0adIk9ejRQ4GBgS7fu0OHDho/frz69+8vf39/l1Ol5yppWSjLetilSxc999xzeuWVVxQWFqb77rtP48aNczn6NmDAAL3yyisKDw/XW2+9paVLl6p58+a6/PLL9de//lWzZ89WaGiopk2bptGjR6tevXrau3evy7asZ8+emjhxom6++WbrCNnYsWM1c+ZMPfvss+rSpYueeeYZPfPMM+revbsmTJig/v37W5dmFqekOs41ZMgQ/e1vf9M///lPhYWF6bHHHtNf//rXQmdPyuOiiy6yniRW8NSrwYMHa+fOnXr99dets7RS2dq8vGbOnKnLL79c119/vQYPHqwWLVrIy8tL9erVU926dfXSSy8pLy9PgwcPVr9+/ZSbm6tly5ZZp/nLojTbqPMpadswbNgwTZ06VTNmzFB4eLiOHDlivSOhtOtYgSeffFL+/v4aOXKkrr76am3cuFGvvvqqmjVrpsGDB2vy5Mm699571bVrV02bNk0PPvigunTpUub5UR6PPvpoke+pKHh60/mMGjVKv/76a6FgfPY6VlalWT4CAgIUEBCgPn366I477tCYMWOsd3Y8/PDD2rNnj8LDw3XdddcpIyNDvXr1stpk7ty56tixo2666Sb16tVLycnJ1u/j9ddfrx07dqhv375WHQkJCRo0aJB69uypw4cPa9myZee9hKe8+zElTauk5bSk3/Gz+fn5acmSJfriiy8UHh6uBx54QD169CjxQFVprFq1Su3bty90aat0Zpk4cOBAocs9g4ODFRoaql69emnjxo267bbbNHLkSEVFRSkkJETz58/XI488ogEDBhQ5zVatWunVV1/Vm2++qT//+c+64YYbdPnll5cYKoYPH659+/YVCsRnLwPlcfvtt+uWW27RjBkzFBYWppdeeknPPPOMy4GdgQMH6p577lHv3r2VmpqqJUuWyMvLSzfeeKP+/Oc/a+jQobr66qv14osv6tZbb9WBAwfkcDgUGhqqRYsWadGiRQoLC9OTTz6pZ555RkFBQW7Px1Ir810YKFZRT39C9Xbu05/s4tyb6iva2TdTonKcfaO2HVRVm2/bts3lRtr09HQTHBxsDhw4UOnTronOvlHbTj7//HNz3XXXeboMlODsG7WTkpLM9u3bXfqvWLHCjB071hOleUxeXp65+uqrzf/+9z9Pl1KtVP4dXgAAnOW1117T/PnzlZ2drZycHEVHR+uyyy6zriVH9ZacnKzdu3frxRdf1Lhx4zxdDsrA6XTq1ltv1caNGyWdua/q9ddfV79+/TxcWdWJi4vTCy+8oBYtWlTZ2cCawu03ai9btkzR0dHn7d+xY0eXF2qc6/HHH7ftm40r01/+8hd999135+1/9k1mRVm/fn2V3/CN80tMTNTAgQPP2//sG+OLEhoaaus3t8OzRo0add4bpfPz8+VwOIq86bKA3d7yXfDklz59+sjpdCo0NFQvv/yyp8uqcTz1O/Pzzz/rvvvu05///GfrXgZUD4GBgfrXv/6lxYsXa/r06fL399eNN96oO+64o9bs702ZMkWSiv2uKFodY87zfEMAAAAAKAUufwIAAADgFkIFAAAAALcQKgAAAAC4hVABAAAAwC2ECgAAAABuIVQAAAAAcAuhAgAAAIBbCBUAAAAA3EKoAAAAAOCW/wd2HhKEdhSDDAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = sns.scatterplot(x='d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Sphingomonadales|f__Erythrobacteraceae|g__Altererythrobacter', y='median_mmNorm', data=erythrobacteraceae_genuses_v9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5295937a-fc21-48bd-9b0a-3ee61430189e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvoAAAGtCAYAAABnfNAHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABctklEQVR4nO3dd3gU5f7+8RsCaYQkwiKIwgExQSkhgRD0BEJTESkiQRAEVMCD5qsUAUFFUTwgKDYQrAhHUSxgQ7ErRaXIkQOolAACkUhJIcmSsinP74/8smRJSIHsLlner+viusjM7Mxnn31m9t7ZZ2ZrGGOMAAAAAHiUmu4uAAAAAEDVI+gDAAAAHoigDwAAAHgggj4AAADggQj6AAAAgAci6AMAAAAeiKAPAAAAeCCCPgAAAOCBarm7AJxfCgoKlJeXp5o1a6pGjRruLgcAAFSAMUYFBQWqVauWatbkPC4KEfThIC8vTzt27HB3GQAA4Cy0bdtW3t7e7i4D5wmCPhwUnQVo27atvLy8qnTd+fn52rFjh1PWXZ3QDoVoh1Noi0K0QyHa4RTaolBF2qFoGc7moziCPhwUDdfx8vJy2kHVmeuuTmiHQrTDKbRFIdqhEO1wCm1RqCLtwLBbFMfHPgAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0IdLpGXa9GdypvKDmuhAcpbSMm3uLgkAAMCj1XJ3AfB8iSeyNHXldq2PT7JPiwmxaE5smBoH+7mxMgAAAM/FGX04VVqmrUTIl6R18UmatnI7Z/YBAACchKAPp0qy2kqE/CLr4pOUZCXoAwAAOANBH06Vnp1b5vyMcuYDAADg7BD04VSBvrXLnF+3nPkAAAA4OwR9OJUlwFsxIZZS58WEWGQJ8HZxRQAAABcGgj6cKsjfW3Niw0qE/ZgQi+bGhinIn6APAADgDNxeE05XQ1Lvtpfo9n82U05egXxq1dSxjBx3lwUAAODRCPpwqrRMmx4o5faaUuFZ/QVDIzirDwAA4AQM3YFTcXtNAAAA9yDow6m4vSYAAIB7EPThVNxeEwAAwD0I+nAqbq8JAADgHgR9OBW31wQAAHAP7roDp2sc7KcFQyN03JqjlPQs1Qv0U4MAH0I+AACAE3FGHy4R5O+t5vX95ZWWoOb1/Qn5AAAATkbQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0AcAAAA8EEEfAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAT9aiI5OVlxcXGKjIxUp06dNGvWLOXl5ZW67JgxY9S2bVtFRETY/61bt87FFQMAAMCdarm7AFTMhAkT1LBhQ61fv15JSUm65557tHTpUo0ZM6bEsr/99psWL16sqKgoN1QKAACA8wFn9KuBgwcPavPmzZoyZYr8/PzUpEkTxcXF6e233y6xbEJCgtLS0tSqVSs3VAoAAIDzBUG/GoiPj1dwcLAaNmxon9aiRQslJiYqPT3dYdkdO3aoTp06mjhxoq6++mr17dtXK1ascHXJAAAAcDOG7lQDJ0+elJ+fn8O0or8zMzMVGBhon26z2RQeHq6JEycqJCREmzZt0n333ac6deqod+/eFd5mfn5+1RRfyjqdse7qhHYoRDucQlsUoh0K0Q6n0BaFKtIOF3oboXQ1jDHG3UWgbN98842mT5+uTZs22aft3r1b/fv315YtW1S3bt0yH//4448rOTlZ8+fPL3db+fn5+t///neuJQMAADcIDw+Xl5eXu8vAeYIz+tVASEiITpw4oaSkJFksFknSvn371KhRoxIhf8WKFSXO3ttsNvn4+FRqm23btq3yA0V+fr527NjhlHVXJ7RDIdrhFNqiEO1QiHY4hbYoVJF2KFoGKI6gXw00a9ZMHTp00OzZszVz5kylpqZq0aJFGjRoUIllrVarnn32Wf3jH//QlVdeqXXr1umzzz7T4sWLK7VNLy8vpx1Unbnu6oR2KEQ7nEJbFKIdCtEOp9AWhWgHVBZBv5qYP3++Zs6cqZ49e6pmzZoaMGCA4uLiJEkRERF6/PHH1b9/f91+++3KzMzUvffeq+TkZDVp0kRz585VZGSkm58BAAAAXImgX01YLJYzjrHfunWr/f81atRQXFyc/UMAAAAALkzcXhMAAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0AcAAAA8EEEfAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0AcAAAA8EEEfAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0AcAAAA8EEEfAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0AcAAAA8EEEfAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH0q4nk5GTFxcUpMjJSnTp10qxZs5SXl1fmY/bs2aN27dpp06ZNLqoSAAAA5wuCfjUxYcIE+fv7a/369VqxYoU2bNigpUuXnnH5rKwsTZo0SdnZ2a4rEgAAAOcNgn41cPDgQW3evFlTpkyRn5+fmjRpori4OL399ttnfMzjjz+ua6+91oVVAgAA4HxSy90FoHzx8fEKDg5Ww4YN7dNatGihxMREpaenKzAw0GH5jz/+WAcPHtSsWbO0aNGis9pmfn7+OdVc1jqdse7qhHYoRDucQlsUoh0K0Q6n0BaFKtIOF3oboXQE/Wrg5MmT8vPzc5hW9HdmZqZD0N+3b5+ee+45LV++XF5eXme9zR07dpz1Y9257uqEdihEO5xCWxSiHQrRDqfQFoVoB1QWQb8a8Pf3V1ZWlsO0or/r1Kljn5aTk6OJEyfqoYceUuPGjc9pm23btj2nDwqlyc/P144dO5yy7uqEdihEO5xCWxSiHQrRDqfQFoUq0g5FywDFEfSrgZCQEJ04cUJJSUmyWCySCs/cN2rUSHXr1rUvt2PHDh04cEAPP/ywHn74Yfv0u+++WzfddJMee+yxCm/Ty8vLaQdVZ667OqEdCtEOp9AWhWiHQrTDKbRFIdoBlUXQrwaaNWumDh06aPbs2Zo5c6ZSU1O1aNEiDRo0yGG5yMhIbd++3WFay5Yt9fLLL6tTp06uLBkAAABuxl13qon58+crLy9PPXv21ODBg9WlSxfFxcVJkiIiIvTpp5+6uUIAAACcTzijX01YLBbNnz+/1Hlbt2494+N2797trJIAAABwHuOMPgAAAOCBCPoAAACAByLoAwAAAB6IoA8AAAB4III+AAAA4IEI+gAAAIAHIugDAAAAHoigDwAAAHgggj4AAADggQj6AAAAgAci6AMAAAAeiKAPAAAAeCCCPgAAAOCBCPoAAACAB6rl7gIuFFu2bNHhw4dljHGYPmDAAPcUBAAAAI9G0HeBGTNmaMWKFbr44otVo0YN+/QaNWoQ9AEAAOAUBH0XWL16td577z21adPG3aUAAADgAsEYfReoW7euQkND3V2GW6Vl2vRncqbyg5roQHKW0jJt7i4JAADAo3FG3wXuuecePfzwwxo9erQCAwMd5jVu3NhNVblO4oksTV25Xevjk+zTYkIsmhMbpsbBfm6sDAAAwHMR9F0gJydHq1ev1meffWafZoxRjRo1tHPnTjdW5nxpmbYSIV+S1sUnadrK7VowNEJB/t5uqg4AAMBzEfRdYNGiRZo+fbo6d+6smjUvrNFSSVZbiZBfZF18kpKsNoI+AACAExD0XSA/P19Dhw51dxlukZ6dW+b8jHLmAwAA4OxcWKeX3WTgwIF688033V2GWwT61i5zft1y5gMAAODscEbfBbZv364lS5bohRdeUFBQkMO99L/77js3VuZ8lgBvxYRYtK6U4TsxIRZZAhi2AwAA4AwEfRcYNGiQBg0a5O4y3CLI31tzYsM0beV2h7AfE2LR3NgwxucDAAA4CUHfBb7++ms9/fTTCggIcHcpbtE42E8LhkbouDVHKelZqhfopwYBPoR8AAAAJ2KMvgts3bpV3t4XdqgN8vdW8/r+8kpLUPP6/oR8AAAAJ+OMvgv07dtX48aNU79+/dSgQQOHMfodO3Z0Y2UAAADwVAR9F1i2bJkkac2aNQ7TL4QfzAIAAIB7EPRdYNeuXe4uAQAAABcYgr6LHDlyRKtWrdLhw4d18cUXq2/fvmratKm7ywIAAICH4mJcF9ixY4f69Omjr7/+Wmlpafruu+/Uv39//fe//3V3aQAAAPBQnNF3gaefflrjx4/XyJEj7dP+85//aN68eVq+fLkbKwMAAICn4oy+C+zevVvDhg1zmDZs2DDt2bPHTRUBAADA0xH0XcDPz09///23w7S///5bQUFBbqoIAAAAno6g7wI33nij7rvvPq1fv15//vmn1q5dq3HjxunGG290d2kAAADwUIzRd4Hx48crJSVFcXFxys3NlY+Pj2JjY3Xvvfe6uzQAAAB4KIK+C/j4+GjOnDmaOXOm0tLSZLFYHH4dFwAAAKhqBH0n+uWXX0qdfuDAAfv/O3bs6KJqAAAAcCEh6DvRiBEjSp1e/Gz+zp07XVUOAAAALiAEfSfatWtXiWk2m01z587Ve++9p3HjxrmhKgAAAFwICPoulJCQoAkTJig1NVVvvvmm2rdv7+6SAAAA4KG4vaaLfPXVV7r55pvVoEEDffjhh4R8AAAAOBVn9J0sNzdXs2fP1gcffKD7779fo0aNcndJAAAAuAAQ9J0oISFB48ePV1pamt555x2FhYW5uyQAAABcIAj6TjRgwABlZmaqR48eWr58uZYvX15imSeffNINlQEAAMDTEfSd6LrrruOHsQAAAOAWBH0nmjNnjrtLAAAAwAWKoO8Cubm5Wr16tQ4fPqyCggKHeffee6+bqgIAAIAnI+i7wKRJk7Rp0yaFhIQ4DOVhWA8AAACchaDvAj/++KM+/fRTXXbZZe4uBQAAABcIfjDLBRo0aKDg4GB3lwEAAIALCGf0XWDq1KkaP368hg0bpsDAQId5HTt2dFNVAAAA8GQEfRfYtm2bfvrpJ/30008O02vUqKGdO3e6qSoAAAB4MoK+C7zzzjt69dVX1blzZ9WseXajpZKTk/XII49o8+bN8vLyUv/+/TV16lTVquX4EhYUFGjhwoVasWKF0tPTddlll+mee+7RjTfeWBVPBQAAANUEY/RdwMfHR9HR0Wcd8iVpwoQJ8vf31/r167VixQpt2LBBS5cuLbHc22+/rY8//lhvvfWWtm7dqvvvv1+TJk3SoUOHzuEZAAAAoLoh6LvAnXfeqXnz5iktLe2sHn/w4EFt3rxZU6ZMkZ+fn5o0aaK4uDi9/fbbJZa97bbbtGrVKjVt2lQ2m00pKSny8/OTr6/vuT4NAAAAVCMM3XGBt99+W4mJiaWega/IGP34+HgFBwerYcOG9mktWrRQYmKi0tPTHS7wrVmzpvz9/fXjjz/qrrvukjFGDz74oC6++OJK1Zyfn1+p5SuzTmesuzqhHQrRDqfQFoVoh0K0wym0RaGKtMOF3kYoHUHfBebMmXNOjz958qT8/PwcphX9nZmZWeJOPpIUFRWlHTt26JdfflFcXJwaNGhQqXH6O3bsOKea3bXu6oR2KEQ7nEJbFKIdCtEOp9AWhWgHVBZB3wWioqLO6fH+/v7KyspymFb0d506dUp9jLe3tyTpmmuu0U033aRVq1ZVKui3bdtWXl5eZ1lx6fLz87Vjxw6nrLs6oR0K0Q6n0BaFaIdCtMMptEWhirRD0TJAcQR9F1i7dq3+/e9/6/DhwzLGOMyryNCdkJAQnThxQklJSbJYLJKkffv2qVGjRqpbt67DskXfHkybNs0+zWazVfoHu7y8vJx2UHXmuqsT2qEQ7XAKbVGIdihEO5xCWxSiHVBZBH0XmDlzpq6//np17dr1rO6806xZM3Xo0EGzZ8/WzJkzlZqaqkWLFmnQoEEllo2MjNTkyZPVs2dPdejQQWvWrNHq1av1xhtvVMVTAQAAQDVB0HeBEydOaPLkyef0KXz+/PmaOXOmevbsqZo1a2rAgAGKi4uTJEVEROjxxx9X//79de2112r69OmaPn26kpKS1KxZMy1YsEDt27evqqcDAACAaoCg7wLdu3fX2rVr1aNHj7Neh8Vi0fz580udt3XrVoe/Bw0aVOrZfgAAAFw4CPouMHLkSA0bNkxXXHFFiTvkvPnmm26qCgAAAJ6MoO8Cjz76qCIiIhQZGclFNAAAAHAJgr4LFP2ybe3atd1dCgAAAC4Qlb8FDCrtqquuUkJCgrvLAAAAwAWEM/oucM0112jkyJG64YYbStzP/t5773VPUQAAAPBoBH0X2Lx5s5o3b67du3c7TK9Ro4abKgIAAICnI+i7wFtvvVXuMq+++qr+9a9/uaAaAAAAXAgYo3+eePnll91dAgAAADwIQf88YYxxdwkAAADwIAT98wTj9QEAAFCVCPoAAACAByLoAwAAAB6IoA8AAAB4IIL+eYKLcQEAAFCVCPrniVtuucXdJQAAAMCD8INZLnDy5Em98847OnDggAoKChzmPfnkk5Kkhx56yB2lAQAAwENxRt8FHnzwQb355pvKyclxdykAAAC4QHBG3wU2bdqkFStWqEmTJu4uBQAAABcIzui7gI+Pjxo2bOjuMgAAAHABIei7wLBhwzRnzhylpKS4uxQAAABcIBi64wLvv/++EhMTtXz58hLzdu7c6YaKAAAA4OkI+i4wZ84cd5cAAACACwxB3wWioqJKnc5QHgAAADgLQd8Ftm/frqeeekpHjx6130c/NzdXKSkp+u2339xcHQAAADwRF+O6wMyZM9WgQQN17txZzZs31/Dhw+Xl5aVJkya5uzQAAAB4KIK+C8THx+vJJ5/Ubbfdpvz8fN1555167rnntGrVKneXBgAAAA9F0HeBwMBA+fr6qkmTJoqPj5ckhYeH6/Dhw26uDAAAAJ6KoO8Cl19+uZYvXy4fHx/5+/tr586d2rdvn2rUqOHu0gAAAOChuBjXBcaPH6977rlH0dHRGj16tAYPHiwvLy8NHTrU3aUBAADAQxH0XaB9+/Zat26dateurSFDhuiqq65SRkaGoqOj3V0aAAAAPBRB34mOHDmiRo0aKTEx0WG6xWKRxWJRYmKiGjdu7KbqAAAA4MkI+k5044036tdff1WPHj1KjMc3xqhGjRrauXOnm6oDAACAJyPoO9Hnn38uSfruu+/cXMmFIy3TpiSrTenZuQr0qy1LHW8F+Xu7uywAAACXI+g70SWXXCJJuvTSS91cyYUh8USWpq7crvXxSfZpMSEWzYkNU+NgPzdWBgAA4HoEfSe68sory72FJkN3qkZapq1EyJekdfFJmrZyuxYMjeDMPgAAuKAQ9J3ozTfflCT99NNPWrdune699141bdpUf//9txYuXMhdd6pQktVWIuQXWRefpCSrjaAPAAAuKAR9J4qKipIkPfzww1q2bJkaNmwoSQoJCdFVV12lW265RePGjXNniR4jPTu3zPkZ5cwHAADwNPwyrgukpKQoMDDQYZqPj48yMjLcVJHnCfStXeb8uuXMBwAA8DQEfRfo2LGjpk6dqoSEBOXm5mr//v2aPHmyunbt6u7SPIYlwFsxIZZS58WEWGQJYNgOAAC4sBD0XeCJJ55QcnKyrrvuOoWFhalPnz7Kz8/XY4895u7SPEaQv7fmxIaVCPsxIRbNjQ1jfD4AALjgMEbfBRo0aKC3335biYmJOnr0qBo1amS/9SaqTuNgPy0YGqEkq00Z2bmq61tblgDuow8AAC5MnNF3kZSUFH399ddavXq16tatqx9++MHdJblUWqZNfyZnKj+oiQ4kZykt0+aU7QT5e6vFxQEKb3qRWlwcQMgHAAAXLM7ou8Dvv/+uO++8U5dffrl2796tkSNHavz48ZoxY4ZiY2PdXZ7TJZ7I0tQV27V+Lz9kBQAA4Cqc0XeBJ598UtOmTdO7776rWrVqqUmTJlq4cKEWL17s7tKcLi3TViLkS4X3tp+6crvTzuwDAABc6Aj6LrBnzx7ddNNNkmT/pdwuXbro6NGj7izLJY5l5JQI+UXWxyfpWEaOiysCAJyttEyb9h2zauuhVO07buVkDXCeY+iOC9SrV0/79+9XSEiIfdr+/ftlsZR+O0hPciKr7B+qSitnPgDg/JB4IktTV253+BVyhmEC5zfO6LvAsGHDNHbsWL3//vvKy8vT6tWrNX78eA0ePNjdpTldXZ+yP0sGlDMfAOB+aZm2EiFfKhyGOY1hmMB5i5TlAiNHjpSXl5f+85//qKCgQPPnz9eQIUN0xx13uLs0p/OpVVPRV9TXT3uTS8yLvqK+fGrxWRMAzndJVluJkF9kXXySkqw27nIGnIdIWS5w4sQJpaWlqV27durdu7ciIiK0Z88ePfTQQ+4uzenSsmy6M7q5oq+o7zA9+or6ujO6OUN3AKAaSM8u+1idUc58AO7BGX0XmDBhgv7++2+Fh4erZs0L67NVXV9vDXt9s0Z1bq5R0c2Vk1cgn1o1tTXhhMYt36pV93Z2d4kAgHIE+tYuc37dcuYDcA+Cvgts27ZNP/zwg4KDg91distZArwV+Y+L9OL3e0vMiwmxyBLAV70AcL6zBHgrJsSidaUM3+FYDpy/LqzTy27StGlT5eZemF9rBvl7a05smGJCHO8wFBNi0dzYMMZ0AkA1wLEcqJ44o+8Cjz76qP71r39pwIABCgoKcpg3YMAA9xTlQo2D/fT0Le2UetKmtKxcBfnX1kX+3moY6Ovu0gAAFdQ42E8LhkYoyWpTRnau6vrWliXAm5APnMcI+i6wYsUK7dmzR0uWLHEYo1+jRo0LIuhz72UA8AxB/gR7oDoh6LvAl19+qU8++URXXHHFWa8jOTlZjzzyiDZv3iwvLy/1799fU6dOVa1aJV/C5cuXa+nSpTp27JguvvhijRw5Urfddtu5PIWzVt69lxcMjeBNAwAAwAkYo+8CF110kZo2bXpO65gwYYL8/f21fv16rVixQhs2bNDSpUtLLPftt9/q2Wef1dy5c/Xrr79qzpw5ev755/XVV1+d0/bPVkXuvQwAAICqR9B3gXHjxunBBx/UH3/8ocOHDysxMdH+ryIOHjyozZs3a8qUKfLz81OTJk0UFxent99+u8SyR48e1V133aXw8HDVqFFDERER6tSpk3755ZeqfloVwr2XAQAA3IOhOy4wbdo0SdLnn3+uGjVqSJKMMapRo4Z27txZ7uPj4+MVHByshg0b2qe1aNFCiYmJSk9PV2BgoH366UN0kpOT9csvv+jBBx+sVM35+fmVWv5M6vqW3cUCfGtV2baqi6Lne6E979PRDqfQFoVoh0K0wym0RaGKtMOF3kYoHUHfBb777rtzevzJkyfl5+d40WrR35mZmQ5Bv7jjx49r7NixatOmjfr27Vupbe7YsePsij1NQP2L1eWK+lq/N7nEvC5X1Fd+5gn9L2FPlWyruqmqNq7uaIdTaItCtEMh2uEU2qIQ7YDKIui7wKWXXnpOj/f391dWVpbDtKK/69SpU+pj/ve//2n8+PGKjIzUk08+WepFu2Vp27atvLy8zq7g08wdZNG0ldsdfmil6K47Det6S00aV8l2qov8/Hzt2LGjStu4OqIdTqEtCtEOhWiHU2iLQhVph6JlgOII+tVASEiITpw4oaSkJFkshT9Wsm/fPjVq1Eh169YtsfyKFSv073//W+PGjdOoUaPOapteXl5VdlAtuvfycWuOUtKzVC/QTw0CfC74u+1UZRtXlbRMm5KsNqVn5yrQr7YsdZx/K73zsR3chbYoRDsUoh1OoS0K0Q6oLIJ+NdCsWTN16NBBs2fP1syZM5WamqpFixZp0KBBJZb96quv9Nhjj+mll15Sly5d3FBt6YL8vRXg46W0hD1q3jycA9V5iN87AADAs3DXnWpi/vz5ysvLU8+ePTV48GB16dJFcXFxkqSIiAh9+umnkqQXX3xR+fn5GjdunCIiIuz/Hn30UXeWj/Nceb93kJbJbVABAKhuOKNfTVgsFs2fP7/UeVu3brX/f9WqVa4qCR6kIr93cKEPtQIAoLrhjD4Afu8AAAAPRNAHoEDf2mXOr1vOfAAAcP4h6AOQJcBbMSGWUufFhFhkCWDYDgAA1Q1BH4CC/L01JzasRNiPCbFobmwY4/MBAKiGuBgXgKRTv3eQZLUpIztXdX1ryxLg/PvoAwAA5yDoA7AL8ifYAwDgKRi6AwAAAHgggj4AAADggQj6AAAAgAci6AMAAAAeiKAPl0jLtOnP5EzlBzXRgeQspWXa3F0SAACAR+OuO3C6xBNZmrpyu9bHJ9mnxYRYNCc2TI2D/ap0W2mZNiVZbUrPzlWgX21Z6nAXGQAAcGEi6MOp0jJtJUK+JK2LT9K0ldu1YGhElQVxV36gAAAAON8R9OFUSVab/nswVff2uEIRTYKVk1cg39pe+vVQqt748U8lWW1VEvRd+YECAACgOiDow6msObmaPzRCS376Uy9+v9c+PfqK+po/NEInc3KrZDtJVluJkF9kXXxSlX2gQNVIy7TpuDXHfs0Gv8ALAEDVI+jDqYL9vPXUV7v1095kh+lFf88e0LZKtpOeXfYHhoxy5sN1GGIFAIBrcNcdOJUtv6BEyC/y095k2fILqmQ7gb61y5xft5z5cI3yhlhxNyYAAKoOQR9OZc3JK3P+yXLmV5QlwFsxIZZS58WEWGQJYFjI+aAiQ6wAAEDVIOjDqVx1pj3I31tzYsNKhP2YEIvmxoYx/vs8wRArAABchzH6cCpLgLeuu+pitbwksMRdd3b/nV6lZ9obB/tpwdAIJVltysjOVV3f2lzkeZ5hiBUAAK5D0IdTBfl765G+rfTgRzsc7rrT+Yr6mn1z2yoP4UH+BPvzWdEQq3WlDN9hiBUAAFWLoTtwqrRMmx7++LcSF+T+uDdZ0z/+jYsvLzAMsQIAwHU4ow+n4v72OF3REKvj1hylpGepXqCfGgT40A8AAKhinNGHU3HxJUoT5O+t5vX95ZWWoOb1/Qn5AAA4AUEfTsXFlwAAAO5B0IdTcX97AAAA9yDow6m4+BIAAMA9uBgXTsfFlwAAAK5H0IdLBPl7K8DHS2kJe9S8ebi8vLycsp20TJuSrDalZ+cq0K+2LHW4rz4AALgwEfThMRJPZGnqyu0Ot/OMCbFoTmyYGgf7ubEyAAAA12OMPjxCWqatRMiXCu/VP23ldn6Y6zyTlmnTn8mZyg9qogPJWbw+AAA4AWf04RH4Ya7qg29eAABwDc7owyPww1zVA9+8AADgOpzRh0cI9K0tf28vjercXBFNgpWTVyDf2l769VCq3vjxT36Y6zzBNy8AALgOQR8ewRLgrTfu6KgF38frxe/32qdHX1Ffb9zRkR/mOk/wzQsAAK7D0B14jIXf79VPe5Mdpv20N1kLf9h7hkfA1QLL+WaFb14AAKg6BH14hCSrTev3lj4kZP3/HxIC97MEeJf4leQiMSEWvnkBAKAKEfThERgSUj0E+XtrTmxYibAfE2LR3NgwxucDAFCFGKMPl0jLtOm4Ncd+33RLQNX+Yi1DQqqPxsF+WjA0QsetOUpJz1K9QD81CPAh5AMAUMUI+nA6V9w3vWhIyLpS7ujCkJDzT5C/twJ8vJSWsEfNm4fLy8vL3SUBAOBxGLoDp3LVfdMZEgIAAOCIM/pwKlfeN71xsJ+evqWdUk/alJ6dp0C/WrrI31sNA32rZP0AAADVCUEfTuXKi2RdMUQIAACgumDoDpzKVRfJumqIEAAAQHVB0IdTueq+6RUZIlTV0jJt2nfMqq2HUrXvuJUPEwAA4LzC0B04VdFFstNWbne4I05VXyTr6vvoM0wIAACc7wj6cDpX3DfdlffRL2+Y0IKhEdzlBwAAuB1Dd+ASQf7eal7fX15pCWpe37/Kg7CrhghJ7hkmBAAAUFkEfXgEV95H39XDhAAAAM4GQ3fgMYqGCCVZbcrIzlVd39qyBHhX+bcHrhwmBAAAcLYI+nCJtEybjltzlB/URAeSs5wSwKXCM/vOHh9fNExoXSnDd6p6mBAAAMDZIujD6TztDjWuupMQAADAuSDow6k89Q41rhomBAAAcLa4GLeaSE5OVlxcnCIjI9WpUyfNmjVLeXl5ZT7mq6++Us+ePV1UYek8+Q41Qf7eanFxgMKbXqQWFwcQ8gEAwHmFoF9NTJgwQf7+/lq/fr1WrFihDRs2aOnSpaUum5ubq9dee03333+/jDGuLfQ0rr5DDb9WCwAAUIihO9XAwYMHtXnzZq1bt05+fn5q0qSJ4uLi9PTTT2vMmDEllh81apR8fHx011136dNPP3VDxae48g41nnYtAAAAwLngjH41EB8fr+DgYDVs2NA+rUWLFkpMTFR6enqJ5Z9++mm9/vrratq0qSvLLJWrfsiqvGsBOLMPAAAuNJzRrwZOnjwpPz/HM9JFf2dmZiowMNBhXqNGjc55m/n5+ee8DkkK8PE64x1q5sSGKcDHq0q2ddyaU+a1AMetOQrw8Trn7VSFoudbVW1cXdEOp9AWhWiHQrTDKbRFoYq0w4XeRigdQb8a8Pf3V1ZWlsO0or/r1KnjlG3u2LGjytZVq1YtPd7nCmUXXKmM7DzV9a0l35p5On5wj/4u54LiisoPalLm/JT0LKUl7KmSbVWVqmzj6ox2OIW2KEQ7FKIdTqEtCtEOqCyCfjUQEhKiEydOKCkpSRZL4TCYffv2qVGjRqpbt65Tttm2bVt5eVXNGfCjGSWH1RSd0W9Yt2qG7vyZnFnm/HqBfmrePLxKtnWu8vPztWPHjipt4+qIdjiFtihEOxSiHU6hLQpVpB2KlgGKI+hXA82aNVOHDh00e/ZszZw5U6mpqVq0aJEGDRrktG16eXlVyUE1LdOmRz/5Te2aBOuOfzZTTl6BfGt76ddDqZrxyW+ad0u7KrktZYMAnzJ/rbZBgM959yZRVW1c3dEOp9AWhWiHQrTDKbRFIdoBlcXFuNXE/PnzlZeXp549e2rw4MHq0qWL4uLiJEkRERFuv7vOmSSftOnWqKbaeihVo/+zRXFv/6pRS3/R1kOpGhLVVMknq+Yi2aJfqz39wl9+rRYAAFyoOKNfTVgsFs2fP7/UeVu3bi11+sCBAzVw4EBnllWuvAKjdzYdVETTizQqurnDGf13Nh3Ug72vqrJt8Wu1AAAApxD04VRGRsM6/UNLfvpTL36/1z49+or6ujO6uQpUtT/oFeRPsAcAAJAYugNnM9KSn/7UT3uTHSb/tDdZS376U1Wc8wEAAPD/EfThVMaoRMgv8tPeZBmCPgAAgFMwdAdOZc0p+z755c0HUFJapk1JVpvSs3MV6FdbljoMWQMAlETQh1PV8Sm7i5U3H4CjxBNZZ/xdisbBfmU8EgBwoWHoDpyqhgovvC1N9BX1VcO15aAcaZk27Ttm1dZDqdp33Kq0zKq5/SmqRlpmyR+fk6R18UmatnI7rxcAwAGnU+FUNWpId0Y3l+Q4Vr/orjs1SPrnDc4Un/+SrLYSIb/IuvgkJVltDOEBANgR9OFU/rW9tPy0++j71KqprQkntHzTQT3Wr7W7S4TKP1O8YGgEAfI8kJ6dW+b8jHLmAwAuLAR9ONXJ3Dw9cMNVeuKz3x3uo9/5ivp6tF9rnczlYtzzAWeKq4dA39plzq9bznwAwIWFoA+nysjO1z3LNmtubJim9r5S1ux8Bfh66Vh6joa9tlEvD+/g7hIhzhRXF5YAb8WEWLSulA9lMSEWWQL4MAYAOIWgD6cK9qutJKtNo/+zpdT5QX6cgTwfcKa4egjy99ac2DBNW7ndIezHhFg0NzaMb10AAA4I+nCqi+v6qEuIpdRhIV1CLLq4ro8bqsLpOFNcfTQO9tOCoRFKstqUkZ2rur61ZQngPvoAgJK4vSacKsjfW3NjwxQTYnGYHhNi0VOcgTxvFJ0pLu114kzx+SfI31stLg5QeNOL1OLiAF4fAECpOKMPpys6A3ncmqOU9CzVC/RTgwAfwsl5hjPFAAB4FoI+XCLI31sBPl5KS9ij5s3D5eXl5e6SUIogf4I9AACegqE7AAAAgAci6AMAAAAeiKAPAAAAeCCCPgAAAOCBCPoAAACAB+KuOwAAAC6QlmlTktWm9OxcBfrVlqUOdzqDcxH04RJpmTYdt+YoP6iJDiRncX92AMAFJfFElqau3O7wS/ExIRbNiQ1T42A/N1YGT0bQh9NxcAMAXMjSMm0l3gclaV18kqat3K4FQyM4+QWnYIw+nKq8g1taps1NlQEA4BpJVluJ98Ei6+KTlGTlvRDOQdCHU3FwAwBc6NKzc8ucn1HOfOBsEfThVBzcAAAXukDf2mXOr1vOfOBsEfThVJ58cEvLtGnfMau2HkrVvuNWhiEBAEplCfBWTIil1HkxIRZZAhifD+fgYlw4VdHBbV0pw3eq88GNC4wBABUV5O+tObFhmrZyu8P7YUyIRXNjw7gQF05D0IdTeeLBjbsnAAAqq3GwnxYMjVCS1aaM7FzV9a3NrabhdAR9OF3Rwe24NUcp6VmqF+inBgE+1fbgVpELjKvrcwMAOE+QP8EersUYfbhEkL+3mtf3l1dagprX96/WBzouMAYAANUBQR+oJE++wBgAAHgOgj5QSdw9AQAAVAcEfaCSii4wPj3sV+cLjAEAgOfhYlzgLHD3BAAAcL4j6ANnibsnAACA8xlDdwAAAAAPRNAHAAAAPBBBHwAAAPBABH0AAADAAxH04RJpmTb9mZyp/KAmOpCcpbRMm7tLAgAA8GjcdQdOl3giS1NXbtf6+CT7tJgQi+bEhqlxsJ8bKwMAAPBcnNGHU6Vl2kqEfElaF5+kaSu3c2YfAADASQj6cKokq61EyC+yLj5JSVaCPgAAgDMQ9OFU6dm5Zc7PKGc+AAAAzg5BH04V6Fu7zPl1y5kPAACAs0PQh1NZArwVE2IpdV5MiEWWAG8XVwQAAHBhIOjDqYL8vTUnNqxE2I8JsWhubJiC/An6AAAAzsDtNeF0jYP9tGBohI5bc5SSnqV6gX5qEOBDyAcAAHAizujDJYL8vdW8vr+80hLUvL4/IR8AAMDJCPoAAACAByLoAwAAAB6IoA8AAAB4III+AAAA4IEI+tVEcnKy4uLiFBkZqU6dOmnWrFnKy8srddm1a9eqX79+Cg8PV+/evfXDDz+4uFoAAAC4G0G/mpgwYYL8/f21fv16rVixQhs2bNDSpUtLLHfgwAHdd999Gj9+vLZs2aL77rtPEyZM0NGjR11fNAAAANyGoF8NHDx4UJs3b9aUKVPk5+enJk2aKC4uTm+//XaJZT/66CNFRkbq2muvVa1atXTjjTeqY8eOeu+999xQOQAAANyFH8yqBuLj4xUcHKyGDRvap7Vo0UKJiYlKT09XYGCgffrevXsVGhrq8PgrrrhCu3btqtQ28/Pzz63oMtbpjHVXJ7RDIdrhFNqiEO1QiHY4hbYoVJF2uNDbCKUj6FcDJ0+elJ+fn8O0or8zMzMdgn5py/r6+iozM7NS29yxY8dZVuvedVcntEMh2uEU2qIQ7VCIdjiFtihEO6CyCPrVgL+/v7KyshymFf1dp04dh+l+fn7Kzs52mJadnV1iuTMxxkiSWrVqJS8vr7MtuVT5+fn6448/nLLu6oR2KEQ7nEJbFKIdCtEOp9AWhSrSDkXLFL2PAxJBv1oICQnRiRMnlJSUJIvFIknat2+fGjVqpLp16zosGxoaqt9//91h2t69e9WmTZsKbaugoECS9Mcff1RB5aVz5rqrE9qhEO1wCm1RiHYoRDucQlsUqkg7FL2PAxJBv1po1qyZOnTooNmzZ2vmzJlKTU3VokWLNGjQoBLL9u/fX0uWLNHq1at1/fXX6+uvv9bmzZv18MMPV2hbtWrVUtu2bVWzZk3VqFGjqp8KAABwAmOMCgoKVKsW0Q6n1DB8x1MtJCUlaebMmdq0aZNq1qypAQMGaPLkyfLy8lJERIQef/xx9e/fX5K0fv16zZs3T4cOHdKll16qKVOmqGvXrm5+BgAAAHAlgj4AAADggbiPPgAAAOCBCPoAAACAByLoAwAAAB6IoA8AAAB4III+AAAA4IEI+gAAAIAHIuijSiUnJysuLk6RkZHq1KmTZs2apby8vFKXXbt2rfr166fw8HD17t1bP/zwg4urdZ5du3bpzjvvVFRUlKKjo/XAAw8oJSWl1GXHjBmjtm3bKiIiwv5v3bp1Lq7YOVavXq1WrVo5PLcpU6aUuqwn94dPP/3UoQ0iIiLUpk2bM/5itSf2iZSUFF133XXatGmTfdq2bdt0yy23KCIiQj169NAHH3xQ5jpee+01xcTEKDw8XCNGjND+/fudXXaVK60dvvrqK910001q3769evTooRdffPGMv25aUFCgiIgIhYeHO/SPzMxMVz2FKlNaW8yYMUNt2rRxeG7vvffeGdfhiX3i0UcfLXG8uOqqqzR69OhSH+9JfQJOYIAqNHz4cDNp0iSTmZlpDh06ZPr06WNee+21Esv9+eefpm3btuabb74xubm55vPPPzdhYWHmyJEjbqi6amVlZZno6GjzwgsvmJycHJOSkmLuuusuM3bs2FKX79Spk9m0aZOLq3SNOXPmmGnTppW7nCf3h9IcOXLEREdHm48//rjU+Z7WJ7Zs2WKuvfZaExoaajZu3GiMMebEiRMmKirKLFu2zOTm5pqff/7ZREREmG3btpW6jg8//NB06dLF7Nmzx2RnZ5snn3zS9OnTxxQUFLjyqZyT0tphx44dJiwszHz//fcmPz/f7N2713Tv3t0sXry41HXs3r3btG7d2uTk5Liy9CpXWlsYY8zNN99sPvzwwwqtw1P7xOnWr19voqKizJ49e0qd7yl9As7BGX1UmYMHD2rz5s2aMmWK/Pz81KRJE8XFxentt98usexHH32kyMhIXXvttapVq5ZuvPFGdezYscwzN9VFYmKirrzySv3f//2fvL29ddFFF2nIkCH65ZdfSiybkJCgtLQ0tWrVyg2VOt+OHTvOeNa6OE/uD6czxmjKlCnq1q2bbrrpphLzPa1PfPTRR5o8ebImTpzoMP3rr79WcHCwbrvtNtWqVUvXXHON+vXrV+rxQpLef/99DRs2TCEhIfLx8dGkSZOUmJjocDb4fHamdjh8+LBuvfVWde/eXTVr1lSLFi103XXXlXq8kAr3qZYtW8rb29sVZTvFmdrCZrNpz549FTpmSJ7bJ4pLSUnR5MmT9fDDDyskJKTUZTyhT8B5CPqoMvHx8QoODlbDhg3t01q0aKHExESlp6c7LLt3716FhoY6TLviiiu0a9cul9TqTJdffrlef/11eXl52ad99dVXat26dYlld+zYoTp16mjixIm6+uqr1bdvX61YscKV5TpNQUGBfv/9d61Zs0bdu3dXTEyMHnnkEaWlpZVY1pP7w+k++eQT7d27V9OmTSt1vqf1ic6dO+ubb77RjTfe6DA9Pj6+Uq/56X2kdu3aatasWbXpI2dqh169eunBBx+0/52dna01a9aUeryQCvtHTk6OYmNjdfXVV+u2227Tr7/+6tTaq9qZ2mLXrl3Ky8vT/Pnz9c9//lO9evXSq6++esZhTJ7aJ4qbN2+e2rRpo/79+59xGU/oE3Aegj6qzMmTJ+Xn5+cwrejv08cKlrasr6+vx40pNMboueee0w8//KCHH364xHybzabw8HBNnDhR69ev17Rp0zRr1ix98cUXbqi2aqWkpKhVq1bq1auXVq9erXfffVcHDhwodYz+hdIfCgoK9NJLL+nuu+9WQEBAqct4Wp9o0KCBatWqVWJ6ZV/z6t5HztQOxVmtVv3f//2ffH19dccdd5S6jK+vr8LCwrRo0SKtWbNGPXr00OjRo5WQkOCEqp3jTG2RkZGhqKgojRgxQmvXrtXTTz+tt956S2+88Uap6/H0PpGQkKBPP/1UkyZNKnM9ntAn4DxlH3WASvD391dWVpbDtKK/69Sp4zDdz89P2dnZDtOys7NLLFedWa1WPfjgg/r999+1bNkytWzZssQyAwYM0IABA+x/d+7cWQMGDNAXX3yh3r17u7DaqmexWByGYfj5+WnKlCkaPHiwrFarQ9C9EPqDJG3atEnHjh3ToEGDzriMJ/eJ4vz8/JSRkeEwrazX3NP7yP79+zVu3DjVr19fb7755hk/CJ7+TdDo0aP14Ycfau3atRo+fLgrSnWa6OhoRUdH2/8OCwvT7bffrtWrV2vMmDEllvf0PrFy5Ur7hbhl8eQ+gXPHGX1UmZCQEJ04cUJJSUn2afv27VOjRo1Ut25dh2VDQ0MVHx/vMG3v3r1nHINY3Rw6dEixsbGyWq1asWJFqSFfklasWFHiTK3NZpOPj48rynSqXbt2ad68eTLG2KfZbDbVrFmzxFhST+8PRb766itdd9118vf3P+Myntwniqvsax4SEuKwfG5urg4cOFBi+E91tHbtWt1yyy3q0qWLFi9erKCgoDMu+9xzz+mPP/5wmOYp/ePbb7/Vu+++6zDNZrPJ19e31OU9uU9IhdexlHYdz+k8uU/g3BH0UWWaNWumDh06aPbs2bJarUpISNCiRYtKPXvZv39/bd68WatXr1ZeXp5Wr16tzZs3V+igdr5LS0vT7bffrvbt22vx4sWqV6/eGZe1Wq164okn9Mcff6igoEBr1qzRZ599piFDhriwYucIDg7W22+/rddff115eXlKTEzU008/rZtvvrlE0Pfk/lDcf//7X3Xs2LHMZTy5TxR33XXXKSkpSUuXLlVubq42btyoVatWKTY2ttTlY2NjtWzZMu3atUs5OTl65plnZLFYFBkZ6eLKq9b//vc//d///Z8efPBBTZ06tdzhPXv27NGsWbN0/Phx2Ww2vfjii7JarbruuutcVLHzGGP05JNPasOGDTLGaOvWrXrzzTfP2Pc9tU9IUmpqqvbt21fu8ULy7D6BKuDWe/7A4xw/ftzcd999Jioqylx99dVmzpw5Ji8vzxhjTHh4uPnkk0/sy65bt87079/fhIeHmz59+pg1a9a4q+wq9cYbb5jQ0FDTrl07Ex4e7vDPGMd2KCgoMAsXLjTdu3c3YWFhpk+fPuaLL75wZ/lVatOmTWbIkCEmIiLCXH311eaJJ54w2dnZxpgLpz8UFx4eXurzulD6xOm3ENy+fbu9f/Ts2dOsXLnSPu+XX34x4eHh5vDhw8aYwnZZvHix6dGjhwkPDzcjRoww+/fvd/lzqArF22Hs2LGmZcuWJY4Vo0ePNsaUbIfU1FQzbdo0c80119jbYefOnW57Lufq9D6xfPlyc/3115t27dqZnj17mmXLltnnXSh9wpjCfSM0NNRkZWWVWNbT+wSqVg1jin2vDgAAAMAjMHQHAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADwQQR8AAADwQAR9AAAAwAMR9AEAAAAPdEEE/fz8fCUkJLi7jGrj2LFjyszMdHcZ5Tpw4IC7S0AlVJf9MCMjQykpKe4uA/BY1XkfO3jwoLtLACrlnIL+ggULNGLEiHMuYsSIEWrTpo0iIiIUHh6uiIgI3XLLLdq8efM5r1uSJk6cqI8//visHz9mzBi9/PLLFVp2wYIFmjZt2llvqzJ69Oihtm3bKiIiwt52nTt31ty5c1VQUHBW60xKSlKvXr2q7CDcsmVLbdq0qUrWVdz333+v0aNHn/XjP/30U/Xp06dCy/71119q2bLlWW/rbAwaNEht27bV8ePHHaZv2rSpwrVU1f5ZVc51Pyxu2rRpTtvPrrvuOsXHx5/14yMiIrRly5YKLTtixAh9+OGHZ72tyvj77781ZcoU/fOf/1R4eLi6d++uJ554Qunp6RV6/IcffqgePXqccf6jjz6qRx99tKrKrbZ69OhR4de0qo6PPXr0sK8nMzNTo0ePVrt27XTbbbdVybqLv88U/1fRfn664vtYef2qsipzjKysuXPn6qWXXnLKut3pww8/dOl7RUZGhp555hn16tVLERER6ty5syZPnqxDhw65rIbiKpPxqqNa7i6gyNixY3XfffdJknJzc/X666/rnnvu0Zo1a1S3bt1zWndqauo5Pf71118/p8c70+OPP66BAwfa/969e7fuuOMO+fn5ady4cZVeX3Z2drU4m3/ixAmdy4869+/fX/3796/CiqrOtm3bdOTIEcXExGjZsmWaOHGiu0uqEue6H7rKuda5devWKqqk6hQUFGjUqFGKjo7Wl19+qcDAQCUkJOihhx7SuHHjtHTp0nPexsyZM8+9UJyznTt36scff9SmTZsUHBxcJes8/X3mXFWXY8Hpqmvd55OUlBQNGTJEV111lV5++WU1a9ZMJ06c0IsvvqghQ4ZoxYoVuvTSS11a0/mc8apCpc7o//rrr4qNjVV4eLhuvfVW/fXXX04pqnbt2hoxYoSsVqv+/PNPSZLVatX06dN1/fXXKzw8XF26dHH4BJaSkqLJkyerY8eO6tSpkyZOnKi0tDQ9/PDD2rJli1555RXdfffdkqRDhw7p7rvvVqdOndS9e3c999xzstlskgo/2Q4cOFCjRo1SZGSkVq1apREjRmjBggUVqqO4TZs2KSYmRi+88II6deqkTp06adasWfZtOUPLli3VsWNH/fHHH5IKzxhOmzZN3bt3V7du3WS1WrV7927dddddioqKUkxMjB577DFlZGQoPz9fffv2lST17dtXq1evliR9/vnn6tevnzp06KCBAwfqxx9/tG8vOztbTz31lLp27aqOHTtqxIgR2r59u0NNP/74o3r37q1OnTpp3LhxDmepV6xYoYEDB6pTp06KiIjQ2LFjHb5N+M9//qPrrrtOERERGjhwoDZs2KBNmzZpxowZSkxMVEREhI4ePSqbzaYXXnhBPXv2VFRUlO666y6Hr1hbtmypf//73+rUqZPuvvvuEmeRyqujuDP1taqybNky3XDDDRo2bJjeffddZWVllbpc0TcNb731lqKjo9WhQwdNmTJFVqvVvszJkyc1ffp0de7cWZ06ddJzzz1nn3f06FFNmDBBPXr0ULt27dSzZ0+tWLHCPr9ly5Z6/fXX1a1bN3ubHD16VFLp+0lZfaGy+6Ekffvttxo4cKDat2+vXr16aenSpQ7fVKWkpOiee+5Rx44dNWDAAK1bt84+b9++fRo7dqy6deumsLAw3Xjjjfrhhx/s83///XeNGDHCfjbphRdekDFGvXr1kiTdddddeu211yRJP//8swYNGqTIyEj16dNHn376qX0906ZN07hx49S7d29dffXVOnTokMNZ2vLqON0HH3ygPn36qH379urXr5/Dts5Famqq9u/frz59+igwMFCS1KRJE02fPl2NGzdWfn6+pLJfc0nKy8vTvHnz1K1bN7Vv317Tp09XXl6evS2KvmVZsGCBxo0bp8mTJysyMlIxMTF65pln7OvJzs7WjBkzFBUVpa5du+r55593OCt9+PBhTZgwQddcc42io6M1adIkHTt2TFLhcbVHjx56/fXX7f3+2Wef1XfffWc/Q3jffffZ+1J5x6iifajosbfeeqt2795tn1/WscEYo5dfflmdO3dWZGSk5s6da29Lqfx9rDir1aqZM2eqa9euuuaaazRx4kQlJSXZ5y9YsEBdu3ZVVFSUYmNj9d1335VYx7fffqs777xTktS9e3d98MEHZfSKqtOjRw89+uijio6O1oABAzRq1Cg98sgjDsuMHTtWL7zwQqn7WHn96vR9rKz+UeTVV19V165dFRMTo6efftreH2w2m+bOnavevXsrIiJC11xzjZ544gn7iaPMzEzNnDlT11xzjSIjI3XXXXfp8OHDWrhwoVatWqVVq1bZTxIlJSVp8uTJio6OVufOnfXoo4/aj7+bNm1S165dNWnSJEVGRurVV1896xxT3rak8t/DynofP90ff/yhoUOHKiIiQjfddJNeeumlKvvWZcGCBfL19dVzzz2n5s2bq0aNGrrooov0yCOPqFu3bvZ9rzLZpciqVavUt29fRUREqHfv3vYMU97zL57x8vLy9MILL6hr165q3769brvtNu3atUtS+ceShIQE3X333erQoYOuueYaPfbYY/Z+d6b3nNK+gSp+LD169KjGjBljf8733ntvib5eLlNBKSkpJjIy0rzyyivGZrOZLVu2mPbt25vhw4dXdBVnNHz4cDN//nz73zk5OWbJkiXm2muvNTk5OcYYY2bMmGFuv/12k5aWZgoKCsyXX35pQkNDzYEDB+zrGDt2rElJSTEZGRlm1KhRZuLEiSXWf/LkSdO9e3czb948k52dbRITE82gQYPMvHnzjDHGrFy50oSGhpoPP/zQ5OTkmKysLIfHl1fH/PnzzdSpU40xxmzcuNGEhoaa8ePHm4yMDPPnn3+aa6+91jz33HPn3GbGGNO9e3ezcuVK+982m81s3LjRdOzY0bz55pv2596lSxdz5MgRk5aWZlJSUkxUVJSZM2eOycrKMseOHTMjR440d999tzHGmISEBBMaGmoSEhKMMcasWbPGdOjQwWzevNnk5eWZ77//3oSHh5s9e/YYY4yZOnWq6devnzlw4IDJyckxS5cuNREREebw4cPGGGNCQ0NNv379zF9//WUyMjLM3XffbUaOHGmMMWbbtm2mXbt2Ztu2bcYYY/7++29z/fXX29tn5cqVJioqyvz6668mPz/fvP/++6Zdu3YmNTXVrFy50nTv3t3+3OfMmWMGDBhgDh06ZLKzs82CBQtMjx49THZ2tr2Ou+66y2RmZpq0tDSHx5dXR1GbFCmrr52rpKQk07ZtW7N3715TUFBgevfubd566y37/KI+Vbyu4cOHm+TkZHPs2DFzyy23mMmTJxtjCvtiy5Ytzccff2wKCgrMhg0bTMuWLc2vv/5qjDFmzJgxZvLkySYzM9Pk5eWZN954w4SFhRmr1Wpvsz59+phDhw6Z9PR0c/fdd5uhQ4faX5vT95Py+kJl9sMNGzaY1q1bm88//9zk5uaa3377zcTExJglS5YYYwr73VVXXWW++uork5ubaz766CPTunVrc/DgQWOMMb179zbz5s0zNpvN5OTkmFmzZpmYmBhjjDGpqakmKirKLFiwwOTk5JiDBw+amJgYs3z5cvvz3rhxozHGmJ07d5qwsDDz1Vdfmby8PPPf//7XdOrUyaxbt85eR3h4uNm9e7dJS0sr8fiy6ihqk6J9eOXKlaZ9+/bm559/Nnl5eebnn3827du3N19//fW5ditjjDEjR440//znP82TTz5pvvnmG3Ps2LESy1TkNX/llVdMbm6uiY+PN+3atTOrVq2yt0XRsa+o73300UcmLy/PrFmzxrRs2dJs3brVGGPMI488Ym6++WaTmJhorFarmTJlir3dbDabuf766839999v0tPTTVpamrn//vvNzTffbHJzc+37wOzZs43NZjNr1qwxoaGh5s477zQnTpwwhw4dMh07djQfffSRva7yjlFDhgwxx44dM+np6eaOO+4wo0aNMsaUf2z44IMPzNVXX21+++03k5OTY5555hkTGhpqf00rso8V9ZX77rvPjBo1yiQlJRmr1WqmT59uhgwZYt93o6OjzdGjR01BQYFZvny56dSpk7HZbMaYwveCovUUP0ZUhdPfZ860zE033WTS0tJMWlqa+fzzz01kZKT9/fv48eOmdevW5tChQyWed0X6VfF9rKL9Y9KkScZqtZoDBw6Ya6+91rz44ovGGGNeffVV06dPH3P06FFjjDG//vqradWqlfn555/t2xs0aJBJTEw0OTk5Ztq0aWbw4MH2eUV9PD8/39xyyy1mypQpJiMjw6SkpJixY8fa3wuK6njxxReNzWYzGRkZZ51jyttWef20vPfxlStX2rNcRkaGueaaa8zzzz9vcnJyzK5du0y3bt0c3m/PRUxMjP21KEtls8vGjRtNmzZtzJo1a0x+fr5Zu3atad26tYmPjy/3+Rd/b5o/f7659tprTXx8vMnLyzPPP/+8iYmJMXl5eWUeS3Jzc811111npk+fbqxWq0lKSjI33XSTmTdvXpnvOaXtr8X72QMPPGAefvhhex+68847zRNPPFGpNq9w0P/www9Nly5dTEFBgX3arFmzqizot2nTxnTo0MF06NDBXHnllaZly5YOAScpKcmkpqaa/Px8k5iYaH744QcTGhpqNm/ebP766y8TGhpq9u/fb1/+2LFjpb6In3/+uYmOjnZ4HuvXrzcRERHGmMIO37p1a5Ofn+9QX9Hjy6rDmJJBv2XLliYlJcW+rnfffbfKdpju3bubsLAwe7t16NDB9OnTxyxatMj+/IYPH24efvhh+2M++OADEx0dbfLy8uzT4uPjTWhoqDl27FiJoD9mzBh7+Cpy//33m5kzZ5rs7GzTunVrs2bNGof5sbGx5pVXXjHGFB7Qv/nmG/u8/fv3m9DQUHPkyBGTlZVl386JEyfMtm3bzK233mqmTZtmr/2ZZ55xWPd///tfk5WV5RDUCwoKTHh4uD18FU3r0qWL+fLLL+11fPLJJ/b5xR9fXh3Fg355fe1cLVy40IwePdr+9zvvvGN69uxp74+lBf3ff//dvvz69etNmzZtTE5Ojpk/f77p27evw/qjo6PNxx9/bIwx5siRIyYjI8Pk5uaaQ4cOmffee8+EhoY6BKDiIbPotUtISCixn1SkL1RmP5wyZYoZN26cw7qWLVtmevXqZYwpPBDGxcU5zB8yZIh56aWXjDHGHDp0yOTk5JicnByzf/9+s2DBAtOyZUtjTOnHsn379pm///7b/ryLQsiMGTNKfIh75plnzNixY+113HHHHQ7ziz++rDqK2qQoRA0bNszMnTvXYV1z5861h85zlZOTY5YtW2Zuv/12065dOxMaGmr69+/vsN+U95q3b9/eod2GDBliFi5caG+L4kG/6LUq0rlzZ/PRRx8Zm81m2rVr57DdjIwMc9VVV5mNGzean3/+2Vx11VUmIyOjxPytW7fa94Hk5GRjjDF5eXkl6h42bJhZsGBBhY9Rn332mX3ee++9Z3r06GGMKf/YMHz4cPPss8/aH5uXl2c6depkf00rso9t3LjRJCUlmdDQULNv3z77ujIzM02rVq3Mjh07zK+//mratGljFixYYH777TeTl5fn8Do4O+if/j7ToUMHh2NL9+7dzaJFi+x/5+TkmKioKPPFF18YY4x54403HLLC6UG/vH5VfB+rSP9o2bKl/YO3MYXvu9dff70xpvB1PH78uCkoKDBHjx41P//8s/2DYU5OjmnTpo1Zv369/bFpaWlm+/bt9lqK+vi2bdtMq1at7B/ajDm1v6SkpNhfhyNHjtjnn22OKW9b5fXTst7Hi16Dotfnk08+MZ07d3bIQMuWLauy3NKmTRvz3nvvlbtcZbPLtGnTzP333++wjm3btpn09PRyn3/x96bu3bubd999175cTk6O2bp1q7FarWUeSzZt2mRatWplMjMz7fMSEhLMwYMHy3zPKS/oP/LII+aGG24wH330kTly5IjD61JRFR6jf/ToUV1yySWqUaOGfVrTpk21c+fOyn2FcAb/+te/7GP08/Pz9eOPP2rSpEmSpOHDhys5OVmzZs3SH3/8ocsuu0xt2rSRVDj2tGgoSPFxXQ0aNFCDBg1KbOfw4cNKSUlRx44d7dOMMcrNzVVycrL9sTVrlj6qqaw6ShMUFKSLLrrI/vcll1xS+a9dyjBjxoxyx05efPHF9v8nJyercePG8vLysk+77LLLJBW2jcVicXjs4cOHtXnzZi1fvtw+LT8/X1dffbXS0tKUm5trf3zx9RUf1lV8fuPGjSUV9qeLLrpIb775platWiV/f3+1bNlSVqvV/hXq8ePH7csXad++fYnnl5KSoszMTI0fP97hdcvNzdXhw4dLbYfiatasWWYdxVWmr1VWXl6e3n33XaWnp6tTp06SCvtVenq6vvnmG/tX3qf7xz/+Yf//JZdcIpvNphMnTkhSiTG63t7e9qEFCQkJeuqpp3TgwAE1a9bMvp7ifbn4uotei6I2KL6fVLQvFClvP0xOTtZVV11VYl3FX8/Tt3XJJZfYh5ns2rVLcXFxOn78uFq0aKF69eo59KvTj2WXX355iRqL6ty4caMiIyPt0/Lz89W0aVP732fqV+XVcbqkpCQ1adKkxHP+/vvvz7j+yvD29tZtt92m2267Tfn5+dq1a5feeecd3X333Vq1apW9Dcp6zYOCghzarXbt2g5DVYo7fZ+oXbu2CgoKdOLECWVlZTnsQwEBAfbjZHJysi666CIFBAQ4zA8ODnY4RhUtX3QsKxqSJBXu08aYCvfL4se9WrVq2V+j8o4Nx44d0yWXXGJ/rJeXl8MxqyL7mCR7vx48eLDDdC8vL/3111+64YYbtGDBAr311lt6/fXX5evrqxEjRuiee+4543tVVars+4y3t7f69u2rTz75RDfccIM++ugjjRo16oyPLa9fnf4eVl7/CAwMdOgPxY8NWVlZmjlzpn755Rc1atRIrVq1kjFGBQUFSktLk81mc3gNAwMD1bZt2xI1//XXX8rPz1fXrl0dpnt7ezvcXez02s8mx6xevbrMbV155ZVl9tOy3sdPd+TIETVu3NihX51+XDoXDRo0OGMGSklJUVBQkH2frkx2OXbsmFq1auWwvrCwMPv8ij7/03OHt7e3wsPDdezYsTKPJZdeeqkuuugi+fn5lajvyy+/PON7Tnl3cZo+fbpeeeUVLV68WNOmTdOVV16p6dOnO7wnlafCQb9Ro0Y6fPiwCgoK7B3gyJEjFd5QZXh5ednHKa5du1bDhw/X+PHj1aNHDy1evFi1atVSamqq3n//fUmyH2gTExPVrFkzSdLevXv12WefacKECSWeR9OmTfXll1/ap1mtViUnJ6tevXqS5PBinK6sOkqTkZGhrKws+4v/119/lQivzlb8+Vx66aVKTExUfn6+fYcputK9QYMGJUJIo0aNNGDAAP3rX/+yT0tMTJSvr6+Cg4Pl4+OjhIQEtWjRwj7/0KFDDuP5jh07piuvvFKS7AfAyy67TEuXLtVPP/2kVatW2d9oi8ZvS4Wv699//+1Qz3PPPVfiItqLLrpIPj4+euONNxQeHm6fvn//fjVs2LDUdiiuvDqKq0xfq6xvvvlGNptNn3/+ucPB7IUXXtCSJUvOGPSPHj1qP2j89ddf8vPzc/hwWZrc3FyNHTtW999/v4YNG6YaNWrot99+KzEm/OjRowoNDbWvWyoMf3/++adDe1oslgr1hSLl7YeXXnppiTswJCQkOITH098sEhIS1Lp1ax09elTjx4/Xiy++aN/2V199pa+//tq+7b///lvGGPtz+Pbbb2W1WjVgwIASdd58880OF5oeO3bMYT85U78qr47TXXbZZeU+57P1/vvv68UXX9QPP/wgLy8veXl5qXXr1po1a5a+/fZb7dmzx96HynrNq0L9+vXl6+urxMRE+zYzMzPtFzpeeumlSk1NldVqtYe5jIwMpaamOhyjyjpOF6lsvzxdeceGRo0aOYQ6Y4y9X1Z0H5NkP0598cUXDq/33r171aRJEyUmJqp+/fpavHixbDabNmzYoHvvvVetW7dWt27dyn0ernD66xEbG6vBgwdr69at+uuvv854/KrsuivSP6xWqzIzM+Xv7y+pcD8qCtDTp09XUFCQfvzxR/n4+KigoMB+wqF+/fry9vbW33//be+bycnJeu2110rNEr6+vtq0aZP9eG2z2ZSQkKB//OMf+u9//1ui9rPNMTExMWVu64033ii3n57pffx0jRs3VmJiosPxMTExsQKvUsX06NFDX3/9te655x6H9zljjMaMGaM2bdrYj7eVyS6XXHJJiTqLMkFlnv/puSM3N1dPP/20Ro8eXeaxpFGjRkpNTXXIe1u2bNFvv/1W5ntO0YcBm80mb29vSYXXVBW9h//xxx8aMmSI7rvvPqWkpGjhwoW69957tXHjxgq3eYVPBfTo0UPGGC1YsEA2m02//fabUy/02bZtmzZt2mTfATMyMuTr6ysvLy+lpKTo3//+t6TCF6Fhw4aKjo7WU089pfT0dFmtVj399NP2A7C3t7f9go3u3bvr5MmTev3112Wz2ZSenq6pU6dq4sSJFXrjKKuO0uTn52vu3LnKycnR/v37tXjxYg0aNOic2+dsFZ0RmDdvnrKzs3X8+HHNmjVLV199tS699FL5+PhIkv0in8GDB+vNN9+0X3CyY8cODRw4UJ999plq1qyp2NhYPfvsszp48KBsNpv+85//aO/evQ63rlywYIGOHj2qtLQ0zZkzR9dff73q1asnq9WqWrVqqXbt2srLy9Mnn3yi9evX29ty4MCBeu+997R9+3YVFBRo5cqVevvtt+3BPisrS3l5eapZs6YGDRqkZ555RkeOHFFBQYE++ugj9e3bt0L3PC6vjuLK62vnYtmyZerXr58uvfRSNWrUyP5vxIgR2rp1q3799ddSH/fMM8/IarXq6NGjmj9/vm666SbVrl27zG3l5uYqOztbvr6+qlGjhhITE/X000/b5xVZuHChjh8/rvT0dM2dO1ddunRx+PBUpCJ9oTL7YWxsrL7//nt98cUXys/P1x9//KHXXntNsbGx9m1+9913Wrt2rXJzc/X+++9r37596tevn06ePKn8/Hz7wXbv3r1auHChpMKDabdu3ZSXl6eXX35ZNptNhw4d0uzZs5WTk1OizkGDBumzzz7Tjz/+qIKCAh04cEDDhw/XG2+8Ue7rWV4dpxs0aJDee+89bdiwQfn5+dq4caPee+89h+d8trp166acnBzNmDFDBw4cUH5+vk6cOKElS5ZIkqKiouzLVvQ1P1tF+2vRcSErK0tPPvmk/Qxu27ZtdcUVV2jGjBnKyMhQRkaGHnvsMTVt2rTUb/TK21ZFjlFnUt6x4ZZbbtH777+vrVu3Kjc3Vy+99JL9zGxF9zGp8LjSrVs3zZo1S6mpqfZ1DRo0SOnp6dqxY4fGjBmjXbt2ydvbW/Xr15ekcj/Qu1OrVq10xRVXaObMmbrxxhsdznQW38cqqyL9Iz8/X3PmzFFmZqb27dunxYsX69Zbb5VU+Jr6+PioZs2aslqteuqpp2S1WpWbm6uaNWtqwIAB9r6Zk5Oj559/Xv/73//k6+vrUHdYWJj+8Y9/aM6cOTp58qSys7M1e/Zs3XHHHWf8lutsc0x52yqvn5b1Pn66oqxXdHwsyi1VJS4uTmlpabr//vvt789Hjx7VQw89pCNHjmjMmDGlPq687HLzzTfrm2++sR+r169frwULFqhu3bqVev4DBw7U4sWL9eeffyovL0+vvPKKvv32W9WrV6/MY0lYWJiaNWumuXPnKisrS0lJSXryySeVkpJS5ntO06ZNVatWLX3++eeSCm/+UDzEv/zyy3riiSdktVoVGBhYoRN5p6tw0A8MDNTixYu1YcMGRUVF6eGHHz6nT+ine+WVVxzuzztp0iSNHDlSd911lyTpySef1OrVq9W+fXsNHDhQDRs2VKtWrbRnzx5JhS9+QECAevfurZ49e6pevXp6/PHHJUkDBgzQypUrNWzYMAUEBGjp0qX2O+Jce+21qlmzZoXvjVteHaUJCgpSz549NXLkSN18881n7MiuULduXS1ZskR79uxR165d1bdvX1166aV64YUXJBWeAbvuuus0ZMgQLV++XDfccIPuv/9+PfTQQ2rfvr3Gjx+vO+64w37P3QceeECdO3fWHXfcoU6dOumLL77Q4sWL1bx5c/s2u3TposGDB+v666+XxWLRrFmzJEmjRo3SJZdcou7du6tLly769NNPNWzYMHtb9uvXT/fdd5+mTJmiyMhIvffee3rttddUr149dezYUfXr11fHjh21e/duTZ06Ve3atdOwYcMUGRmppUuXav78+SW+yitNeXWcrqy+drZ27dqlLVu2lPr1eKtWrdSmTZszhsumTZuqb9++6t+/vyIiIvTQQw+Vuz1/f3/Nnj1bCxcuVEREhEaOHKno6GhZLBaH5926dWsNGzZMPXr0UGBgoObNm3fGdZbXFyqzH7Zr104vvPCCXnvtNUVGRuree+/V0KFDHc5S9ezZU6+99pqioqL0/vvva/HixWrYsKEuv/xyPfDAA5oyZYo6dOig8ePHKzY2VrVr19aePXscjmWdO3fWiBEjdOutt2rIkCGSpCFDhmjSpEl67rnn1K5dOz377LN69tln1bFjRw0fPlw9evSwDyssS3l1nK5379568MEH9e9//1uRkZF67LHH9MADD5T4luFsXHzxxfY7OBXd+aFXr17aunWr3nnnHfu3mVLlXvOzNWnSJF1++eW68cYb1atXLzVq1Eg1a9ZU7dq1VatWLb3yyivKy8tTr1691L17d+Xm5mrJkiWqVavyd4SuyDHqTMo7NvTt21fjxo3TxIkTFRUVpYSEBPsdNCq6jxV56qmnFBgYqAEDBujqq6/W2rVr9frrr6tBgwbq1auXRo0apXvuuUfh4eEaP368HnroIbVr167S7XE2ZsyYUep99IvumnMmAwcO1B9//FHiw2rxfayyKtI/goODFRwcrK5du2r06NEaPHiw/TcFpk+frl27dikqKko33HCDrFarunTpYn9Npk2bpjZt2uiWW25Rly5dlJqaan9/vPHGG/Xrr7+qW7du9jqSkpJ0/fXXq3Pnzjp06JCWLFliP2F2urPNMeVtq7x+Wt77eHH+/v5atGiRvvvuO0VFRen+++9XdHR0uSePKqpevXpasWKFgoKCdMcddygiIkKDBg1SXl6eli9f7jAssrjyskuHDh00d+5czZ07V5GRkXrqqaf07LPPKiQkpFLPf8yYMerXr59Gjx6tTp06acuWLXrttddUu3btMo8ltWvX1ssvv6yjR4+qW7duuummm9SxY0eNGzeuzPeciy++WA899JAWLVqk9u3ba9myZQ45YObMmSooKFDPnj3VsWNHbdu2zf6cK6zSo/pRptLuuoPq7fS77pwvTr9wuqoVv2AOzlH8Ytzzgate882bNztcLJmRkWFCQ0PNn3/+6fRte6LiF+OeT7799ltzww03uLsMlKP4xbgpKSlmy5YtDvPffPNNM2TIEHeUhirg/Kt4AAAo5o033tCsWbOUnZ2tnJwczZ8/X82bN7ePTUb1lpqaqp07d+qll17S0KFD3V0OKiE/P1+333671q5dK6nwOp133nlH3bt3d3NlOFvn/Mu4S5Ys0fz58884v02bNvrtt9/OOP/xxx8/b3+h1Jn+7//+Tz///PMZ5xe/kKg0n3/+ucsv6sWZJScn69prrz3j/OIXEJWmQ4cOHv/rfDh7AwcOPOPFsAUFBbLZbKVeWFbkfPu13scee0yPP/64unbtqvz8fHXo0EGvvvqqu8vyOO56n/ntt99077336p///Kd9bDyqB4vFoueff17z5s3ThAkTFBgYqJtvvlmjR48m71VTNYw5w73eAAAAAFRbDN0BAAAAPBBBHwAAAPBABH0AAADAAxH0AQAAAA9E0AcAAAA8EEEfAAAA8EAEfQAAAMADEfQBAAAAD0TQBwAAADzQ/wP02EfS5PxTdwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = sns.scatterplot(x='d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Sphingomonadales|f__Erythrobacteraceae|g__Croceicoccus', y='median_mmNorm', data=erythrobacteraceae_genuses_v9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "43f452f1-712a-415d-bb7d-e0702f18eae5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1llnae7cuRo4cKDF7wAAAAC+RNAHAAAAbIjr6AMAAAA2RNAHAAAAbIigDwAAANgQQR8AAACwIYI+AAAAYEMEfQAAAMCGCPrwiZSUFMXFxSkqKkoxMTFatGiRCgsLrS7L9jZv3qwuXbooMjLS/W/u3LlWl2VbqampuuSSS7R9+3b3tO+//15XXXWVIiMjNXjwYL3xxhsWVmhPZbX7ggUL1K1bN491/7XXXrOwSnvYs2ePbrjhBkVHRys2NlZ/+9vflJqaKol13ZsqanfWdVTIAD4wadIkM3v2bJOTk2MOHjxohg8fbp5//nmry7K9JUuWmHnz5lldRr3w7bffmosvvthERESYr7/+2hhjTHp6uomOjjYvv/yyKSgoMF999ZWJjIw033//vcXV2kdZ7W6MMVdeeaV58803LazMfnJzc01sbKx58sknTX5+vklNTTU333yzmTZtGuu6F1XU7sawrqNi9OjD6w4cOKAdO3Zo7ty5CgoKUrt27RQXF6d169ZZXZrtJSQkqFu3blaXYXtvvfWW5syZo1mzZnlM//DDDxUWFqZrr71WDRo00IUXXqiRI0ey7teQ8trd6XRq7969rPs1LCkpSeedd57++te/KjAwUM2bN9eECRP0zTffsK57UUXtzrqOyhD04XWJiYkKCwtT69at3dM6duyopKQkZWZmWliZvRUVFemHH37QZ599pkGDBmnAgAG69957lZGRYXVpttOvXz999NFHuvzyyz2mJyYmKiIiwmNap06dtGfPHl+WZ1vltfuePXtUWFio5cuX689//rOGDh2q5557TkVFRRZVag/nnnuuXnjhBQUEBLinffDBB+ratSvruhdV1O6s66gMQR9ed/z4cQUFBXlMK/47JyfHipLqhdTUVHXp0kVDhw7V5s2b9eqrr2r//v2M0feCli1bqkGDBqWml7XuN27cmPW+hpTX7llZWYqOjtbkyZP1+eef65FHHtFLL72kF1980YIq7ckYo8cff1yffvqp7rnnHtZ1Hzm53VnXUZnSe0ighgUHBys3N9djWvHfTZo0saKkesHhcHgcNg8KCtLcuXM1fvx4ZWdnKyQkxMLq6oegoCBlZWV5TMvLy2O997LY2FjFxsa6/+7Ro4euu+46bd68WTfddJOFldlDdna27rrrLv3www96+eWX1blzZ9Z1Hyir3Tt37sy6jgrRow+vCw8PV3p6upKTk93T9u3bpzZt2qhp06YWVmZve/bs0bJly2SMcU9zOp3y9/dXYGCghZXVHxEREUpMTPSY9vPPPys8PNyiiuqHjz/+WK+++qrHNKfTqcaNG1tUkX0cPHhQY8eOVXZ2tjZs2KDOnTtLYl33tvLanXUdlSHow+vOOecc9enTR4sXL1Z2drYOHTqklStXaty4cVaXZmthYWFat26dXnjhBRUWFiopKUmPPPKIrrzySoK+j1xyySVKTk7WmjVrVFBQoK+//lqbNm3S2LFjrS7N1owxeuihh7Rt2zYZYxQfH6+1a9dqwoQJVpdWp2VkZOi6665T7969tWrVKp1xxhnueazr3lNRu7OuozJ+pmR3H+AlycnJWrhwobZv3y5/f3+NHj1ac+bM8Ti5CDVvx44deuyxx7R37141atRIw4cP19y5c9WoUSOrS7Otzp07a+3atYqJiZF04spHixYt0t69e3XGGWcoLi5OY8aMsbhK+zm53V999VWtXr1aR44ckcPh0A033KBrr73W4irrttWrV2vJkiUKCgqSn5+fx7z4+HjWdS+prN1Z11ERgj4AAABgQwzdAQAAAGyIoA8AAADYEEEfAAAAsCGCPgAAAGBDBH0AAADAhgj6AAAAgA0R9AEAAAAbqhdB3+Vy6dChQ1aXUWccPXpUOTk5VpdRqf3791tdAqqhrmyHWVlZSk1NtboMwLbq8jZ24MABq0vASerKd0tZfJFjTivor1ixQpMnTz7tIiZPnqxu3bopMjJSvXr1UmRkpK666irt2LHjtJctSbNmzdLbb799ys+/6aab9I9//KNKj12xYoXmzZt3yq9VHYMHD1b37t0VGRnpbrt+/fpp6dKlKioqOqVlJicna+jQoTW2E+7cubO2b99eI8sq6T//+Y9uvPHGU37+u+++q+HDh1fpsb/99ps6d+58yq91KsaNG6fu3bvr2LFjHtO3b99e5VpqavusKae7HZY0b948r21nl1xyiRITE0/5+ZGRkfr222+r9NjJkyfrzTffPOXXqo7ff/9dc+fO1Z///Gf16tVLgwYN0t///ndlZmZW6flvvvmmBg8eXO78++67T/fdd19NlVtnDR48uMqfaU3tHwcPHuxeTk5Ojm688Ub17NmzRu6OevL3TMl/VV3PT1ZyG6tsvaqu6uwjq2vp0qV65plnvLJsK7355ps++66YN2+eunbtWub6VNWcdbKS3y3F39e//fZbjdVcW3NMVTXw+itU0bRp03T77bdLkgoKCvTCCy/o1ltv1WeffaamTZue1rLT0tJO6/kvvPDCaT3fmx544AGPW4z/9NNPuv766xUUFKTp06dXe3l5eXl1ojc/PT1dp3NT51GjRmnUqFE1WFHN+f777/XHH39owIABevnllzVr1iyrS6oRp7sd+srp1hkfH19DldScoqIiTZ06VbGxsfr3v/+t0NBQHTp0SHfffbemT5+uNWvWnPZrLFy48PQLxWnbvXu3vvjiC23fvl1hYWE1ssyTv2dOV13ZF5ysrtZd24wcOVJLliypseXV1c/ldHNMVVWrR/+7777T2LFj1atXL1199dU1+ouppIYNG2ry5MnKzs7Wr7/+KknKzs7W/Pnzdemll6pXr17q37+/x6+/1NRUzZkzR3379lVMTIxmzZqljIwM3XPPPfr222/17LPP6pZbbpEkHTx4ULfccotiYmI0aNAgPf7443I6nZJO/LIdM2aMpk6dqqioKG3atEmTJ0/WihUrqlRHSdu3b9eAAQP05JNPKiYmRjExMVq0aJH7tbyhc+fO6tu3r3788UdJJ3oM582bp0GDBumiiy5Sdna2fvrpJ918882Kjo7WgAEDdP/99ysrK0sul0sjRoyQJI0YMUKbN2+WJL3//vsaOXKk+vTpozFjxuiLL75wv15eXp4efvhhDRw4UH379tXkyZO1c+dOj5q++OILDRs2TDExMZo+fbpHL/WGDRs0ZswYxcTEKDIyUtOmTfM4mvDPf/5Tl1xyiSIjIzVmzBht27ZN27dv14IFC5SUlKTIyEgdOXJETqdTTz75pIYMGaLo6GjdfPPNHodYO3furAcffFAxMTG65ZZbSvUiVVZHSeWtazXl5Zdf1mWXXaaJEyfq1VdfVW5ubpmPK+65eOmllxQbG6s+ffpo7ty5ys7Odj/m+PHjmj9/vvr166eYmBg9/vjj7nlHjhzRzJkzNXjwYPXs2VNDhgzRhg0b3PM7d+6sF154QRdddJG7TY4cOSKp7O2konWhutuhJH388ccaM2aMevfuraFDh2rNmjUeR6pSU1N16623qm/fvho9erS2bNninrdv3z5NmzZNF110kXr06KHLL79cn376qXv+Dz/8oMmTJysyMlL9+vXTk08+KWOMhg4dKkm6+eab9fzzz0uSvvrqK40bN05RUVEaPny43n33Xfdy5s2bp+nTp2vYsGG64IILdPDgQY/en8rqONkbb7yh4cOHq3fv3ho5cqTHa52OtLQ0/fLLLxo+fLhCQ0MlSe3atdP8+fPVtm1buVwuSRV/5pJUWFioZcuW6aKLLlLv3r01f/58FRYWutui+CjLihUrNH36dM2ZM0dRUVEaMGCAHn30Ufdy8vLytGDBAkVHR2vgwIF64oknPHqlDx8+rJkzZ+rCCy9UbGysZs+eraNHj0o6sV8dPHiwXnjhBfd6/9hjj+mTTz7R0KFDFRkZqdtvv929LlW2jyrehoqfe/XVV+unn35yz69o32CM0T/+8Q/169dPUVFRWrp0qbstpcq3sZKys7O1cOFCDRw4UBdeeKFmzZql5ORk9/wVK1Zo4MCBio6O1tixY/XJJ5+UWsbHH3+sG264QZI0aNAgvfHGGxWsFTVn8ODBuu+++xQbG6vRo0dr6tSpuvfeez0eM23aND355JNlbmOVrVcnb2MVrR/FnnvuOQ0cOFADBgzQI4884l4fnE6nli5dqmHDhikyMlIXXnih/v73v7sDV05OjhYuXKgLL7xQUVFRuvnmm3X48GE9/fTT2rRpkzZt2uTuJEpOTtacOXMUGxurfv366b777nPvf7dv366BAwdq9uzZioqK0nPPPXfKOaay15Iq/w6r6Hv8ZD/++KOuueYaRUZG6oorrtAzzzxTo0ddKnPyZ/7MM8+415tiq1at0rXXXlvmd4skbdq0ScOGDVOvXr10/fXXn/J3V7HamGOqzFRRamqqiYqKMs8++6xxOp3m22+/Nb179zaTJk2q6iLKNWnSJLN8+XL33/n5+Wb16tXm4osvNvn5+cYYYxYsWGCuu+46k5GRYYqKisy///1vExERYfbv3+9exrRp00xqaqrJysoyU6dONbNmzSq1/OPHj5tBgwaZZcuWmby8PJOUlGTGjRtnli1bZowxZuPGjSYiIsK8+eabJj8/3+Tm5no8v7I6li9fbu68805jjDFff/21iYiIMDNmzDBZWVnm119/NRdffLF5/PHHT7vNjDFm0KBBZuPGje6/nU6n+frrr03fvn3N2rVr3e+9f//+5o8//jAZGRkmNTXVREdHmyVLlpjc3Fxz9OhRM2XKFHPLLbcYY4w5dOiQiYiIMIcOHTLGGPPZZ5+ZPn36mB07dpjCwkLzn//8x/Tq1cvs3bvXGGPMnXfeaUaOHGn2799v8vPzzZo1a0xkZKQ5fPiwMcaYiIgIM3LkSPPbb7+ZrKwsc8stt5gpU6YYY4z5/vvvTc+ePc33339vjDHm999/N5deeqm7fTZu3Giio6PNd999Z1wul3n99ddNz549TVpamtm4caMZNGiQ+70vWbLEjB492hw8eNDk5eWZFStWmMGDB5u8vDx3HTfffLPJyckxGRkZHs+vrI7iNilW0bp2upKTk0337t3Nzz//bIqKisywYcPMSy+95J5fvE6VrGvSpEkmJSXFHD161Fx11VVmzpw5xpgT62Lnzp3N22+/bYqKisy2bdtM586dzXfffWeMMeamm24yc+bMMTk5OaawsNC8+OKLpkePHiY7O9vdZsOHDzcHDx40mZmZ5pZbbjHXXHON+7M5eTupbF2ozna4bds207VrV/P++++bgoICs2vXLjNgwACzevVqY8yJ9e788883H3zwgSkoKDBvvfWW6dq1qzlw4IAxxphhw4aZZcuWGafTafLz882iRYvMgAEDjDHGpKWlmejoaLNixQqTn59vDhw4YAYMGGDWr1/vft9ff/21McaY3bt3mx49epgPPvjAFBYWmv/+978mJibGbNmyxV1Hr169zE8//WQyMjJKPb+iOorbpHgb3rhxo+ndu7f56quvTGFhofnqq69M7969zYcffni6q5UxxpgpU6aYP//5z+ahhx4yH330kTl69Gipx1TlM3/22WdNQUGBSUxMND179jSbNm1yt0Xxvq943XvrrbdMYWGh+eyzz0znzp1NfHy8McaYe++911x55ZUmKSnJZGdnm7lz57rbzel0mksvvdTccccdJjMz02RkZJg77rjDXHnllaagoMC9DSxevNg4nU7z2WefmYiICHPDDTeY9PR0c/DgQdO3b1/z1ltvueuqbB81YcIEc/ToUZOZmWmuv/56M3XqVGNM5fuGN954w1xwwQVm165dJj8/3zz66KMmIiLC/ZlWZRsrXlduv/12M3XqVJOcnGyys7PN/PnzzYQJE9zbbmxsrDly5IgpKioy69evNzExMcbpdBpjTnwXFC+n5D6iJpz8PVPeY6644gqTkZFhMjIyzPvvv2+ioqLc39/Hjh0zXbt2NQcPHiz1vquyXpXcxqq6fsyePdtkZ2eb/fv3m4svvtg89dRTxhhjnnvuOTN8+HBz5MgRY4wx3333nenSpYv56quv3K83btw4k5SUZPLz8828efPM+PHj3fOK13GXy2WuuuoqM3fuXJOVlWVSU1PNtGnT3N8FxXU89dRTxul0mqysrFPOMZW9VmXraWXf4xs3bnRnuaysLHPhhReaJ554wuTn55s9e/aYiy66yOP79nSUbMOKHlPyMz9y5Ig5//zzzf/+9z/3Y0aMGGE2bNjgbrfi75bi78W//vWvJjMz06Snp5vRo0ebe++91/1eq/vdVVtzTFVVOei/+eabpn///qaoqMg9bdGiRTUW9Lt162b69Olj+vTpY8477zzTuXNnj4CTnJxs0tLSjMvlMklJSebTTz81ERERZseOHea3334zERER5pdffnE//ujRo+6VuORK8P7775vY2FiP97F161YTGRlpjDnxoXTt2tW4XC6P+oqfX1EdxpQO+p07dzapqanuZb366qs1tsEMGjTI9OjRw91uffr0McOHDzcrV650v79JkyaZe+65x/2cN954w8TGxprCwkL3tMTERBMREWGOHj1aKujfdNNN7vBV7I477jALFy40eXl5pmvXruazzz7zmD927Fjz7LPPGmNOrJgfffSRe94vv/xiIiIizB9//GFyc3Pdr5Oenm6+//57c/XVV5t58+a5a3/00Uc9lv3f//7X5ObmemwgRUVFplevXu7wVTytf//+5t///re7jnfeecc9v+TzK6ujZNCvbF07XU8//bS58cYb3X+/8sorZsiQIe71sayg/8MPP7gfv3XrVtOtWzeTn59vli9fbkaMGOGx/NjYWPP2228bY4z5448/TFZWlikoKDAHDx40r732momIiPDYuZUMmcWf3aFDh0ptJ1VZF6qzHc6dO9dMnz7dY1kvv/yyGTp0qDHmxBdBXFycx/wJEyaYZ555xhhjzMGDB01+fr7Jz883v/zyi1mxYoXp3LmzMabsfdm+ffvM77//7n7fxSFkwYIFpX7EPfroo2batGnuOq6//nqP+SWfX1EdxW1SHKImTpxoli5d6rGspUuXukPn6crPzzcvv/yyue6660zPnj1NRESEGTVqlMd2U9ln3rt3b492mzBhgnn66afdbVEy6Bd/VsX69etn3nrrLeN0Ok3Pnj09XjcrK8ucf/755uuvvzZfffWVOf/8801WVlap+fHx8e5t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qmg/Xay66+XJKts3tGnTxiPUGWPc62VVtzFJ7v3Uv/71L4/P++eff1a7du2UlJSkFi1aaNWqVXI6ndq2bZtuu+02de3aVRdddFGl78MXTv48xo4dq/Hjxys+Pl6//fZbufuv6i67KutHdna2cnJyFBwcLOnEdlQcoOfPn69mzZrpiy++UKNGjVRUVOTucGjRooUCAwP1+++/u9fNlJQUPf/882VmicaNG2v79u3u/bXT6dShQ4f0pz/9Sf/9739L1X6qOWbAgAEVvtaLL75Y6Xpa3vf4ydq2baukpCSP/WNSUlIVPqWadfL6NHjwYC1YsEBffvml/vWvf+nJJ5+skWVXdR9R23NMRarcFTB48GAZY7RixQo5nU7t2rXLqyf6fP/999q+fbt7A8zKylLjxo0VEBCg1NRUPfjgg5JO7Exbt26t2NhYPfzww8rMzFR2drYeeeQR94cRGBiorKwsSSdOUDp+/LheeOEFOZ1OZWZm6s4779SsWbOq1IAV1VEWl8ulpUuXKj8/X7/88otWrVqlcePGnXb7nKriHoFly5YpLy9Px44d06JFi3TBBRforLPOUqNGjSTJfZLP+PHjtXbtWveJKQkJCRozZozee+89+fv7a+zYsXrsscd04MABOZ1O/fOf/9TPP//scenKFStW6MiRI8rIyNCSJUt06aWX6owzzlB2drYaNGighg0bqrCwUO+88462bt3qbssxY8botdde086dO1VUVKSNGzdq3bp17g0iNzdXhYWF8vf317hx4/Too4/qjz/+UFFRkd566y2NGDGiStc8rqyOkipb107Hyy+/rJEjR+qss85SmzZt3P8mT56s+Ph4fffdd2U+79FHH1V2draOHDmi5cuX64orrlDDhg0rfK2CggLl5eWpcePG8vPzU1JSkh555BH3vGJPP/20jh07pszMTC1dulT9+/f32OkUq8q6UJ3tcOzYsfrPf/6jf/3rX3K5XPrxxx/1/PPPa+zYse7X/OSTT/T555+roKBAr7/+uvbt26eRI0fq+PHjcrlc7h/XP//8s55++mlJJ74cL7roIhUWFuof//iHnE6nDh48qMWLFys/P79UnePGjdN7772nL774QkVFRdq/f78mTZqkF198sdLPs7I6TjZu3Di99tpr2rZtm1wul77++mu99tprHu/5VF100UXKz8/XggULtH//frlcLqWnp2v16tWSpOjoaPdjq/qZn6ri7bV4v5Cbm6uHHnrI3ePWvXt3derUSQsWLFBWVpaysrJ0//33q3379mX2hFX2WlXZR5Wnsn3DVVddpddff13x8fEqKCjQM8884+6Zreo2Jp3Yr1x00UVatGiR0tLS3MsaN26cMjMzlZCQoJtuukl79uxRYGCgWrRoIUmV/qC3UpcuXdSpUyctXLhQl19+uXs7kDy3seqqyvrhcrm0ZMkS5eTkaN++fVq1apWuvvpqSSc+00aNGsnf31/Z2dl6+OGHlZ2drYKCAvn7+2v06NHudTM/P19PPPGE/ve//6lx48Yedffo0UN/+tOftGTJEh0/flx5eXlavHixrr/++nKPcp1qjqnstSpbTyv6Hj9ZcdYr3j8W5xarNWzYUKNGjdKTTz6pkJAQj6Osp7M+2SXHVPgeq/rA0NBQrVq1Stu2bVN0dLTuueee0/qFfrJnn33W43qqs2fP1pQpU3TzzTdLkh566CFt3rxZvXv31pgxY9S6dWt16dJFe/fulXQiuIaEhGjYsGEaMmSIzjjjDD3wwAOSpNGjR2vjxo2aOHGiQkJCtGbNGvcVcS6++GL5+/tX+dq4ldVRlmbNmmnIkCGaMmWKrrzySt10002n2VqnrmnTplq9erX27t2rgQMHasSIETrrrLPcv44dDocuueQSTZgwQevXr9dll12mO+64Q3fffbd69+6tGTNm6Prrr3dfc/dvf/ub+vXrp+uvv14xMTH617/+pVWrVqlDhw7u1+zfv7/Gjx+vSy+9VA6HQ4sWLZIkTZ06VWeeeaYGDRqk/v37691339XEiRPdbTly5Ejdfvvtmjt3rqKiovTaa6/p+eef1xlnnKG+ffuqRYsW6tu3r3766Sfdeeed6tmzpyZOnKioqCitWbNGy5cvV5cuXSptk8rqOFlF69qp2rNnj7799tsyD4936dJF3bp1Kzdctm/fXiNGjNCoUaMUGRmpu+++u9LXCw4O1uLFi/X0008rMjJSU6ZMUWxsrBwOh8f77tq1qyZOnKjBgwcrNDRUy5YtK3eZla0L1dkOe/bsqSeffFLPP/+8oqKidNttt+maa67x6CkZMmSInn/+eUVHR+v111/XqlWr1Lp1a5177rn629/+prlz56pPnz6aMWOGxo4dq4YNG2rv3r0e+7J+/fpp8uTJuvrqqzVhwgRJ0oQJEzR79mw9/vjj6tmzpx577DE99thj6tu3ryZNmqTBgwe7hxVWpLI6TjZs2DDdddddevDBBxUVFaX7779ff/vb30odZTgVrVq1cl/BqfhqQ0OHDlV8fLxeeeUV99FMqXqf+amaPXu2zj33XF1++eUaOnSo2rRpI39/fzVs2FANGjTQs88+q8LCQg0dOlSDBg1SQUGBVq9erQYNqn9F6Krso8pT2b5hxIgRmj59umbNmqXo6GgdOnTIfQ33qm5jxR5++GGFhoZq9OjRuuCCC/T555/rhRdeUMuWLTV06FBNnTpVt956q3r16qUZM2bo7rvvVs+ePavdHqdiwYIFZV73vPiqOeUZM2aMfvzxx1I/VktuY9VVlfUjLCxMYWFhGjhwoG688UaNHz/efU+B+fPna8+ePYqOjtZll12m7Oxs9e/f3/2ZzJs3T926ddNVV12l/v37Ky0tzf39ePnll+u7777TRRdd5K4jOTlZl156qfr166eDBw9q9erV7g6zk51qjqnstSpbTyv7Hi8pODhYK1eu1CeffKLo6Gjdcccdio2NrbTzqDo2bdpU5vpU2ZVkitenk78nS363nAo75JgKVXtUPypU1lV3ULedfNWd2uLkE6drWskT5uAdJU/GrQ189Znv2LHD42TJrKwsExERYX799Vevv7YdlTwZtzb5+OOPzWWXXWZ1GahEyZNxU1NTzbfffusxf+3atWbChAlWlOYhLS3NdOvWzeMEZ1TO+2fxAABQwosvvqhFixYpLy9P+fn5Wr58uTp06OAem4y6LS0tTbt379Yzzzyja665xupyUA0ul0vXXXedPv/8c0knztN55ZVXNGjQIMtqcjqdSkxM1KOPPqqBAwfW6FDC+uC074y7evVqLV++vNz53bp1065du8qd/8ADD9TaO5R601//+ld99dVX5c4veSJRWd5//32fn9SL8qWkpOjiiy8ud37Jk5/L0qdPn1p9B2ZYa8yYMeWeDFtUVCSn01nmiXXFatvdeu+//3498MADGjhwoFwul/r06aPnnnvO6rJsx6rvmV27dum2227Tn//8Z/fYeNQNDodDTzzxhJYtW6aZM2cqNDRUV155pW688UbL8p7T6dTVV1+tM888s9wblKJ8fsb44P67AAAAAHyKoTsAAACADRH0AQAAABsi6AMAAAA2RNAHAAAAbIigDwAAANgQQR8AAACwIYI+AAAAYEMEfQAAAMCGCPoAAACADf0/FUV2rpHwhBYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = sns.scatterplot(x='d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Sphingomonadales|f__Erythrobacteraceae|g__Erythrobacter', y='median_mmNorm', data=erythrobacteraceae_genuses_v9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "92882532-76f4-46d5-8765-8d8351b58403",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwYAAAGtCAYAAACsgmPQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABYZ0lEQVR4nO3deVyU9f7//6egbCKSjmmWfrIEyx1FqIPiWpZbJqZHU09ZHYtjLilpaZulYdmmZafS9HQ0W7TN8rQvWpnm0aNYLmi5UiogmywDw/v3h1/m5wgCKnCB1+N+u3m7yXXNXNfrNXPNNddzrq2WMcYIAAAAgK15WV0AAAAAAOsRDAAAAAAQDAAAAAAQDAAAAACIYAAAAABABAMAAAAAIhgAAAAAEMEAAAAAgKTaVheAmqGwsFAFBQXy8vJSrVq1rC4HAACUgzFGhYWFql27try8+D0YpSMYoFwKCgqUkJBgdRkAAOActGvXTj4+PlaXgWqOYIByKfqVoV27dvL29q7QabtcLiUkJFTKtKs7O/cu2bt/O/cu2bt/O/cu2bt/K3ovmid7C1AeBAOUS9HhQ97e3pW2MqvMaVd3du5dsnf/du5dsnf/du5dsnf/VvTOYcAoD+IjAAAAAIIBAAAAAIIBAAAAABEMAAAAAIhgAAAAAEAEAwAAAAAiGAAAAAAQwQAAAACACAYAAAAARDAAAAAAIIIBLJae7dTvKdly1W+mfSk5Ss92Wl0SAACALdW2ugDYV1Jajqat2qZ1icnuYdEhDsXHtFfTYH8LKwMAALAf9hjAEunZzmKhQJLWJiZr+qpt7DkAAACoYgQDWCI5y1ksFBRZm5is5CyCAQAAQFUiGMASGbn5pY7PLGM8AAAAKhbBAJYI8qtT6vh6ZYwHAABAxSIYwBKOQB9FhzhKHBcd4pAj0KeKKwIAALA3ggEsUT/AR/Ex7YuFg+gQh+bGtFf9AIIBAABAVeJypbBMLUk3trtEf/vL5corKJRvbS8dzcyzuiwAAABbIhjAEunZTt1fwuVKpZN7DRaMCGOvAQAAQBXiUCJYgsuVAgAAVC8EA1iCy5UCAABULwQDWILLlQIAAFQvBANYgsuVAgAAVC8EA1iCy5UCAABUL1yVCJZpGuyvBSPCdCwrT6kZOWoQ5K9Ggb6EAgAAAAuwxwCWqh/goxYNA+SdflAtGgYQCgAAACxCMAAAAABAMAAAAABAMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQASDGi8lJUWxsbEKDw9XZGSkZs+erYKCghIfe+edd6pdu3YKCwtz/1u7dm0VVwwAAIDqqLbVBeD8TJo0SY0bN9a6deuUnJyse+65R0uXLtWdd95Z7LHbt2/X4sWLFRERYUGlAAAAqM7YY1CD7d+/Xxs3blRcXJz8/f3VrFkzxcbGavny5cUee/DgQaWnp6t169YWVAoAAIDqjmBQgyUmJio4OFiNGzd2D7vyyiuVlJSkjIwMj8cmJCSobt26mjx5sq655hoNGDBAK1eurOqSAQAAUE1xKFENduLECfn7+3sMK/o7OztbQUFB7uFOp1MdO3bU5MmTFRISog0bNujee+9V3bp1deONN5Z7ni6Xq2KKL2GalTHt6s7OvUv27t/OvUv27t/OvUv27t+K3u34OuPc1TLGGKuLwLn54osvNHPmTG3YsME9bNeuXRo0aJA2bdqkevXqlfr8xx57TCkpKZo/f36Z83K5XPrf//53viUDAAALdOzYUd7e3laXgWqOPQY1WEhIiNLS0pScnCyHwyFJ2rt3r5o0aVIsFKxcubLY3gGn0ylfX9+zmme7du0qfMXicrmUkJBQKdOu7uzcu2Tv/u3cu2Tv/u3cu2Tv/q3ovWieQHkQDGqwyy+/XJ07d9acOXM0a9YsHT9+XAsXLtTQoUOLPTYrK0vPPvus/u///k9XXXWV1q5dq48//liLFy8+q3l6e3tX2sqsMqdd3dm5d8ne/du5d8ne/du5d8ne/du5d1RvBIMabv78+Zo1a5Z69+4tLy8vDR48WLGxsZKksLAwPfbYYxo0aJD+9re/KTs7W+PHj1dKSoqaNWumuXPnKjw83OIOAAAAUB0QDGo4h8NxxnMEtmzZ4v5/rVq1FBsb6w4NAAAAwKm4XCkAAAAAggEAAAAAggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIYAAAAABDBAAAAAIAIBgAAAABEMAAAAAAgggEAAAAAEQwAAAAAiGAAAAAAQAQDAAAAACIY1HgpKSmKjY1VeHi4IiMjNXv2bBUUFJT6nN27d6tDhw7asGFDFVUJAACA6o5gUMNNmjRJAQEBWrdunVauXKn169dr6dKlZ3x8Tk6OpkyZotzc3KorEgAAANUewaAG279/vzZu3Ki4uDj5+/urWbNmio2N1fLly8/4nMcee0x9+vSpwioBAABQE9S2ugCcu8TERAUHB6tx48buYVdeeaWSkpKUkZGhoKAgj8d/8MEH2r9/v2bPnq2FCxee0zxdLtd51VzaNCtj2tWdnXuX7N2/nXuX7N2/nXuX7N2/Fb3b8XXGuSMY1GAnTpyQv7+/x7Civ7Ozsz2Cwd69e/Xcc89pxYoV8vb2Pud5JiQknPNzrZx2dWfn3iV792/n3iV792/n3iV792/n3lG9EQxqsICAAOXk5HgMK/q7bt267mF5eXmaPHmyHnzwQTVt2vS85tmuXbvzChYlcblcSkhIqJRpV3d27l2yd/927l2yd/927l2yd/9W9F40T6A8CAY1WEhIiNLS0pScnCyHwyHp5J6BJk2aqF69eu7HJSQkaN++fZoxY4ZmzJjhHn733Xfrpptu0qOPPlrueXp7e1fayqwyp13d2bl3yd7927l3yd7927l3yd7927l3VG8Egxrs8ssvV+fOnTVnzhzNmjVLx48f18KFCzV06FCPx4WHh2vbtm0ew1q1aqV//vOfioyMrMqSAQAAUE1xVaIabv78+SooKFDv3r01bNgwdevWTbGxsZKksLAwffTRRxZXCAAAgJqAPQY1nMPh0Pz580sct2XLljM+b9euXZVVEgAAAGog9hgAAAAAIBgAAAAAIBgAAAAAEMEAAAAAgAgGAAAAAEQwAAAAACCCAQAAAAARDAAAAACIYAAAAABABAMAAAAAIhgAAAAAEMEAAAAAgAgGAAAAAEQwAAAAACCpttUF2N2mTZt0+PBhGWM8hg8ePNiaggAAAGBLBAMLPfLII1q5cqUuvvhi1apVyz28Vq1aBAMAAABUKYKBhdasWaO3335bbdu2tboUAAAA2BzBwEL16tVTaGio1WVUS+nZTiVnOZWRm68g/zpy1PVR/QAfq8sCAAC4YBEMLHTPPfdoxowZuuOOOxQUFOQxrmnTphZVZb2ktBxNW7VN6xKT3cOiQxyKj2mvpsH+FlYGAABw4SIYWCgvL09r1qzRxx9/7B5mjFGtWrW0Y8cOCyuzTnq2s1gokKS1icmavmqbFowIY88BAABAJSAYWGjhwoWaOXOmunbtKi8vrhwrSclZzmKhoMjaxGQlZzkJBgAAAJWAYGAhl8ulESNGWF1GtZKRm1/q+MwyxgMAAODc8DO1hYYMGaI33njD6jKqlSC/OqWOr1fGeAAAAJwb9hhYaNu2bVqyZIleeOEF1a9f3+NeBl999ZWFlVnHEeij6BCH1pZwOFF0iEOOQA4jAgAAqAwEAwsNHTpUQ4cOtbqMaqV+gI/iY9pr+qptHuEgOsShuTHtOb8AAACgkhAMLPT555/r6aefVmBgoNWlVCtNg/21YESYkrOcyszNVz2/OnIEch8DAACAykQwsNCWLVvk48PGbknqBxAEAAAAqhLBwEIDBgzQhAkTNHDgQDVq1MjjHIMuXbpYWBkAAADshmBgoWXLlkmSvv32W4/hdr7BGQAAAKxBMLDQzp07rS4BAAAAkEQwsNyff/6p1atX6/Dhw7r44os1YMAANW/e3OqyAAAAYDPc4MxCCQkJ6t+/vz7//HOlp6frq6++0qBBg/Tf//7X6tIAAABgM+wxsNDTTz+tiRMnasyYMe5h//rXvzRv3jytWLHCwsoAAABgN+wxsNCuXbs0cuRIj2EjR47U7t27LaoIAAAAdkUwsJC/v7/++OMPj2F//PGH6tevb1FFAAAAsCuCgYX69eune++9V+vWrdPvv/+u7777ThMmTFC/fv2sLg0AAAA2wzkGFpo4caJSU1MVGxur/Px8+fr6KiYmRuPHj7e6NAAAANgMwcBCvr6+io+P16xZs5Seni6Hw+Fx92MAAACgqhAMLPDzzz+XOHzfvn3u/3fp0qWKqgEAAAAIBpYYPXp0icNP3VuwY8eOqioHAAAAIBhYYefOncWGOZ1OzZ07V2+//bYmTJhgQVUAAACwM4JBNXDw4EFNmjRJx48f1xtvvKFOnTpZXRIAAABshsuVWuyzzz7TzTffrEaNGum9994jFAAAAMAS7DGwSH5+vubMmaN3331X9913n8aOHWt1SQAAALAxgoEFDh48qIkTJyo9PV1vvvmm2rdvb3VJAAAAsDmCgQUGDx6s7Oxs9erVSytWrNCKFSuKPebJJ5+0oDIAAADYFcHAAtdddx03MgMAAEC1QjCwQHx8vNUlAAAAAB4IBhbKz8/XmjVrdPjwYRUWFnqMGz9+vEVVAQAAwI4IBhaaMmWKNmzYoJCQEI9DizjMCAAAAFWNYGCh77//Xh999JEuu+wyq0sBAACAzXGDMws1atRIwcHBVpcBAAAAsMfAStOmTdPEiRM1cuRIBQUFeYzr0qWLRVUBAADAjggGFtq6dat++OEH/fDDDx7Da9WqpR07dlhUFQAAAOyIYGChN998U6+++qq6du0qL69zO6orJSVFDz30kDZu3Chvb28NGjRI06ZNU+3anm9tYWGhXnrpJa1cuVIZGRm67LLLdM8996hfv34V0QoAAABqOM4xsJCvr6+ioqLOORRI0qRJkxQQEKB169Zp5cqVWr9+vZYuXVrsccuXL9cHH3ygf//739qyZYvuu+8+TZkyRQcOHDiPDgAAAHChIBhY6Pbbb9e8efOUnp5+Ts/fv3+/Nm7cqLi4OPn7+6tZs2aKjY3V8uXLiz321ltv1erVq9W8eXM5nU6lpqbK399ffn5+59sGAAAALgAcSmSh5cuXKykpqcRf+MtzjkFiYqKCg4PVuHFj97Arr7xSSUlJysjI8Dih2cvLSwEBAfr+++911113yRijBx54QBdffPFZ1exyuc7q8WczzcqYdnVn594le/dv594le/dv594le/dvRe92fJ1x7ggGFoqPjz+v5584cUL+/v4ew4r+zs7OLnalI0mKiIhQQkKCfv75Z8XGxqpRo0ZndZ5BQkLCedVs1bSrOzv3Ltm7fzv3Ltm7fzv3Ltm7fzv3juqNYGChiIiI83p+QECAcnJyPIYV/V23bt0Sn+Pj4yNJuvbaa3XTTTdp9erVZxUM2rVrJ29v73OsuGQul0sJCQmVMu3qzs69S/bu3869S/bu3869S/bu34rei+YJlAfBwELfffednnjiCR0+fFjGGI9x5TmUKCQkRGlpaUpOTpbD4ZAk7d27V02aNFG9evU8Hlu0d2L69OnuYU6n86xvsObt7V1pK7PKnHZ1Z+feJXv3b+feJXv3b+feJXv3b+feUb0RDCw0a9YsXX/99erevfs5XZno8ssvV+fOnTVnzhzNmjVLx48f18KFCzV06NBijw0PD9fUqVPVu3dvde7cWd9++63WrFmj119/vSJaAQAAQA1HMLBQWlqapk6del6/GsyfP1+zZs1S79695eXlpcGDBys2NlaSFBYWpscee0yDBg1Snz59NHPmTM2cOVPJycm6/PLLtWDBAnXq1Kmi2gEAAEANRjCwUM+ePfXdd9+pV69e5zwNh8Oh+fPnlzhuy5YtHn8PHTq0xL0JAAAAAMHAQmPGjNHIkSPVsmXLYlcQeuONNyyqCgAAAHZEMLDQww8/rLCwMIWHh3MSEgAAACxFMLBQ0Z2L69SpY3UpAAAAsLmzvxQOKszVV1+tgwcPWl0GAAAAwB4DK1177bUaM2aMbrjhhmL3Exg/frw1RQEAAMCWCAYW2rhxo1q0aKFdu3Z5DK9Vq5ZFFQEAAMCuCAYW+ve//13mY1599VX9/e9/r4JqAAAAYGecY1DN/fOf/7S6BAAAANgAwaCaM8ZYXQIAAABsgGBQzXG+AQAAAKoCwQAAAAAAwQAAAAAAwQAAAACACAbVHicfAwAAoCoQDKq5W265xeoSAAAAYAPc4MxCJ06c0Jtvvql9+/apsLDQY9yTTz4pSXrwwQetKA0AAAA2wx4DCz3wwAN64403lJeXZ3UpAAAAsDn2GFhow4YNWrlypZo1a2Z1KQAAALA59hhYyNfXV40bN7a6DAAAAIBgYKWRI0cqPj5eqampVpcCAAAAm+NQIgu98847SkpK0ooVK4qN27FjhwUVAQAAwK4IBhaKj4+3ugQAAABAEsHAUhERESUO59AiAAAAVDWCgYW2bdump556SkeOHHHfxyA/P1+pqanavn27xdUBAADATjj52EKzZs1So0aN1LVrV7Vo0UKjRo2St7e3pkyZYnVpAAAAsBmCgYUSExP15JNP6tZbb5XL5dLtt9+u5557TqtXr7a6NAAAANgMwcBCQUFB8vPzU7NmzZSYmChJ6tixow4fPmxxZQAAALAbgoGFrrjiCq1YsUK+vr4KCAjQjh07tHfvXtWqVcvq0gAAAGAznHxsoYkTJ+qee+5RVFSU7rjjDg0bNkze3t4aMWKE1aUBAADAZggGFurUqZPWrl2rOnXqaPjw4br66quVmZmpqKgoq0sDAACAzRAMLPDnn3+qSZMmSkpK8hjucDjkcDiUlJSkpk2bWlQdAAAA7IhgYIF+/fpp8+bN6tWrV7HzCYwxqlWrlnbs2GFRdQAAALAjgoEFPvnkE0nSV199ZXEl1kvPdupYVp5c9ZtpX0qOHIE+qh/gY3VZAAAAtkMwsMAll1wiSbr00kstrsRaSWk5mrZqm9YlJruHRYc4FB/TXk2D/S2sDAAAwH4IBha46qqryrwk6YV+KFF6trNYKJCktYnJmr5qmxaMCGPPAQAAQBUiGFjgjTfekCT98MMPWrt2rcaPH6/mzZvrjz/+0EsvvWSLqxIlZzmLhYIiaxOTlZzlJBgAAABUIYKBBSIiIiRJM2bM0LJly9S4cWNJUkhIiK6++mrdcsstmjBhgpUlVrqM3PxSx2eWMR4AAAAVizsfWyg1NVVBQUEew3x9fZWZmWlRRVUnyK9OqePrlTEeAAAAFYtgYKEuXbpo2rRpOnjwoPLz8/Xbb79p6tSp6t69u9WlVTpHoI+iQxwljosOccgRyGFEAAAAVYlgYKHHH39cKSkpuu6669S+fXv1799fLpdLjz76qNWlVbr6AT6Kj2lfLBxEhzg0N6Y95xcAAABUMc4xsFCjRo20fPlyJSUl6ciRI2rSpIn7UqZ20DTYXwtGhOlYVp5SM3LUIMhfjQJ9CQUAAAAWYI+BxVJTU/X5559rzZo1qlevnr755hurS6pS9QN81KJhgLzTD6pFw4AyQ0F6tlN7j2Zpy4Hj2nssS+nZziqqFAAA4MLGHgML/fLLL7r99tt1xRVXaNeuXRozZowmTpyoRx55RDExMVaXV+0kpeVo2sptWreHG6IBAABUNPYYWOjJJ5/U9OnT9dZbb6l27dpq1qyZXnrpJS1evNjq0qqd9GxnsVAgnbznwbRV29hzAAAAcJ4IBhbavXu3brrpJkly3wm5W7duOnLkiJVlVan0bKd+T8mWq34z7UvJOeMG/tHMvGKhoMi6xGQdzcyrzDIBAAAueBxKZKEGDRrot99+U0hIiHvYb7/9Joej5Mt4XmiS0nI0bdU2jzsgn+nQoLSc0m94ll7GeAAAAJSOPQYWGjlypMaNG6d33nlHBQUFWrNmjSZOnKhhw4ZZXVqlS892FgsF0slDg6aXcGhQXR/vUqcXUMZ4AAAAlI49BhYaM2aMvL299a9//UuFhYWaP3++hg8frttuu83q0ipdcpazWCgosjYxWclZTo8rFPnX8VZUy4b6YU9KscdHtWwo/zoEAwAAgPPBHgMLpaWlKT09XR06dNCNN96osLAw7d69Ww8++KDVpVW6jNzSD/3JPG18gTEa37Ololo29Bge1bKhxvcMkcuYCq8RAADATthjYKFJkybpjz/+UMeOHeXlZa+MFuRXp9Tx9U4b712rlnLzC9W/3SUaG9VCeQWF8q3tpSMZucrNd8nr/528DQAAgHNDMLDQ1q1b9c033yg4ONjqUqqcI9BH0SEOrS3hcKLoEIccgZ43OmtY10dPrtmhVpcEqXGQn3t4Unquvtl5VPNu6VDpNQMAAFzICAYWat68ufLz7Xk1nfoBPoqPaa/pq7Z5hIPoEIfmxrQvdgfk+gE+euymtpq+apte/HpPmY8HAADA2SEYWOjhhx/W3//+dw0ePFj169f3GDd48GBriqpCTYP99fQtHXT8hFPpOfmqH1BHFwX4eOwROP3xC0aEKTnLqczcfNXzqyNHoA+hAAAAoAIQDCy0cuVK7d69W0uWLPE4x6BWrVq2CAZncx+DIvUDCAIAAACVgWBgoU8//VQffvihWrZsec7TSElJ0UMPPaSNGzfK29tbgwYN0rRp01S7dvG3dsWKFVq6dKmOHj2qiy++WGPGjNGtt956Pi2cs7LuY7BgRBgBAAAAoArZ61I41cxFF12k5s2bn9c0Jk2apICAAK1bt04rV67U+vXrtXTp0mKP+/LLL/Xss89q7ty52rx5s+Lj4/X888/rs88+O6/5n6vy3McAAAAAVYdgYKEJEybogQce0K+//qrDhw8rKSnJ/a889u/fr40bNyouLk7+/v5q1qyZYmNjtXz58mKPPXLkiO666y517NhRtWrVUlhYmCIjI/Xzzz9XdFvlcrb3MQAAAEDl4lAiC02fPl2S9Mknn6jW/7sOvzFGtWrV0o4dO8p8fmJiooKDg9W4cWP3sCuvvFJJSUnKyMhQUFCQe/jphwylpKTo559/1gMPPHBWNbtcrrN6/JnU8yt90Qv0q11h86rOinq0Q68lsXP/du5dsnf/du5dsnf/VvRux9cZ545gYKGvvvrqvJ5/4sQJ+ft7nqRb9Hd2drZHMDjVsWPHNG7cOLVt21YDBgw4q3kmJCScW7GnCWx4sbq1bKh1e1KKjevWsqFc2Wn638HdFTKvmqCiXteays7927l3yd7927l3yd7927l3VG8EAwtdeuml5/X8gIAA5eTkeAwr+rtu3bolPud///ufJk6cqPDwcD355JMlnqRcmnbt2snb2/vcCj7N3KGOEu9jEB/TXo3r+UjNmlbIfKozl8ulhISECn1daxI792/n3iV792/n3iV7929F70XzBMqDYFCDhYSEKC0tTcnJyXI4HJKkvXv3qkmTJqpXr16xx69cuVJPPPGEJkyYoLFjx57TPL29vStsZVZ0X4JjWXlKzchRgyB/NQr0LfVqROnZTiVnOZWRm68g/zpy1L0wLl9aka9rTWTn/u3cu2Tv/u3cu2Tv/u3cO6o3gkENdvnll6tz586aM2eOZs2apePHj2vhwoUaOnRoscd+9tlnevTRR/Xyyy+rW7duFlRbsvoBPgr09Vb6wd1q0aJjqSvKc7nvAQAAAMqHqxLVcPPnz1dBQYF69+6tYcOGqVu3boqNjZUkhYWF6aOPPpIkvfjii3K5XJowYYLCwsLc/x5++GEryy+3su57kJ7N5U0BAADOB3sMajiHw6H58+eXOG7Lli3u/69evbqqSqoU5bnvwYVwSBEAAIBV2GOAGoH7HgAAAFQuggFqhCC/OqWOr1fGeAAAAJSOYIAawRHoo+gQR4njokMccgRyGBEAAMD5IBigRqgf4KP4mPbFwkF0iENzY9pzfgEAAMB54uRj1BhF9z1IznIqMzdf9fzqyBF4YdzHAAAAwGoEA9Qo9QMIAgAAAJWBQ4kAAAAAEAwAAAAAEAwAAAAAiGAAAAAAQAQDWCw926nfU7Llqt9M+1JylJ7ttLokAAAAW+KqRLBMUlqOpq3cpnV7kt3DokMcio9pr6bB/hZWBgAAYD/sMYAl0rOdxUKBJK1NTNa0VdvYcwAAAFDF2GMASxzNzCsWCoqsS0zW0cw87ldwFtKznUrOciojN19B/nXkqMv9HgAAwNkhGMASaTn5CvDx1tiuLRTWLFh5BYXyq+OtzQeO6/Xvf1d6Tr7VJdYYSWk5mrZqm9YlckgWAAA4dwQDWCLQ11vzR4RpyQ+/68Wv97iHR7VsqPkjwlTX19vC6mqO9GxnsVAgnTwka/qqbVowIow9BwAAoFw4xwCWCPSprSU//K4f9qR4DP9hT4qW/vC7An3IrOWRnOUsFgqKrE1MVnIW52oAAIDyIRjAErkFhcVCQZHv96Qot6CwiiuqmTJySz/kKrOM8QAAAEUIBrBEVl5BqeNPlDEeJwX51Sl1fL0yxgMAABQhGMASbNBWDEegj6JDHCWOiw5xyBHI+QUAAKB8CAawhCPQR93OsEHbjQ3acqsf4KP4mPbFwkF0iENzY9pz4jEAACg3zvCEZf7Rs6UKjfE41yCqZUP9o2dLC6uqeZoG+2vBiDAlZzmVmZuven515AjkPgYAAODsEAxgieQsp8Yu/Vlju7bQ2KgWyisolG9tL205mKaxS3/W6vFd2bA9C/UDCAIAAOD8EAxgiYzcfGU7XR73MDgVV9MBAACoWpxjAEtw8jEAAED1QjCAJbiaDgAAQPVCMIAluJoOAABA9cI5BrBM0dV0jmXlKTUjRw2C/NUo0JdQAAAAYAGCASxVP8BHgb7eSj+4Wy1adJS3t/c5Tys926nkLKcycvMV5F9HjrpcqQcAAKC8CAa4ICSl5Wjaqm1al5jsHhYd4lB8THs1Dfa3sDIAAICagXMMUKOkZzu192iWthw4rr3HspSe7VR6trNYKJCktYnJmr5qm9KznRZVCwAAUHOwxwA1xpn2Csy6qa3+u/94ic9Zm5is5CwnhxQBAACUgT0GqBFK2yvw0IfbNbZrizM+l5ulAQAAlI1gAEulZzv1e0q2XPWbaV9KzhkP+0nOchYLBUXWJSYrrFnwGefBzdIAAADKxqFEsMzZnDCccY6/+nOzNAAAgPJhjwEscbYnDAeV8av/ZRf5c7M0AACA88AeA1iitEODSjph2BHoo+gQh9aW8JzoEIeaBPlpwYgwJWc5lZmbr3p+deQI5D4GAAAA5UUwgCXKOjTo9BOG6wf4KD6mvaav2uYRDk7fK0AQAAAAODcEA1giyK+OAny8NbZrC4U1C1ZeQaH86nhr84Hjev3730s8YbhpsD97BQAAACoJwQCWcAT66PXbumjB14l68es97uFRLRvq9du6nPGE4foBBAEAAIDKwMnHsMxLX+/RD3tSPIb9sCdFL32z5wzPAAAAQGUhGMASyVlOrdtz5vsSJGeVfD8DAAAAVA6CASxxticfAwAAoHIRDGCJQN/ST2+pW8Z4AAAAVCyCASzh4+2lqJYNSxwX1bKhfLxZNAEAAKoSW1+wREauUw8PaKOup4WDri0b6pGBbZSZyzkGAAAAVYnjNWCJID8fPfbxL+rY/CLdHtVCeQWF8q3tpS0H0xT/nx16ZEAbq0sEAACwFYIBLOF0Ferrncf09c5jJY5/4MbCKq4IAADA3jiUCJbIyisodfyJMsYDAACgYhEMYIkgvzqljq9XxngAAABULIIBLOEI9FF0iKPEcdEhDjkCfaq4IgAAAHsjGMAS9QN89MTgtiVeleiJwW1VP4BgAAAAUJU4+RiWSM92atbHv5Z4VaLHP/5V827pQDgAAACoQgSDGi4lJUUPPfSQNm7cKG9vbw0aNEjTpk1T7dpnfms/++wzPfXUU/rqq6+qsFJPyVlOfbnjqL7ccfSM4wkGAAAAVYdDiWq4SZMmKSAgQOvWrdPKlSu1fv16LV26tMTH5ufn67XXXtN9990nY0zVFnqajNz8UsdnljEeAAAAFYtgUIPt379fGzduVFxcnPz9/dWsWTPFxsZq+fLlJT5+7Nix2rBhg+66664qrrQ4rkoEAABQvRAMarDExEQFBwercePG7mFXXnmlkpKSlJGRUezxTz/9tBYtWqTmzZtXZZklCvSrXezE4yJdWzZUoB9HuQEAAFQltr5qsBMnTsjf399jWNHf2dnZCgoK8hjXpEmT856ny+U672lIUlZevm6LaiEj6Yc9Ke7hUS0b6raoFsrKy5fDdeHvNSh6PSvqda1p7Ny/nXuX7N2/nXuX7N2/Fb3b8XXGuSMY1GABAQHKycnxGFb0d926dStlngkJCRUyHVf9ZpqwYovGdm2hsaddlWjCii1aOqaT0g7s9niOl5eXAi5yqMA7QCfyXAr09Za3K1vZx5NVWFhYIXVZpaJe15rKzv3buXfJ3v3buXfJ3v3buXdUbwSDGiwkJERpaWlKTk6Ww3HyZmF79+5VkyZNVK9evUqZZ7t27eTt7X3e0/k9JVvZTpde/HpPieMbBPmrRYuOHsOOZDo1bdU2rUtMdg+LDnEoPqa9GtermVcwcrlcSkhIqLDXtaaxc/927l2yd/927l2yd/9W9F40T6A8CAY12OWXX67OnTtrzpw5mjVrlo4fP66FCxdq6NChlTZPb2/vClmZNQr01XVXX6xWlwQprFmw8goK5VfHW5sPHNeuPzLUKNDXYz7p2cVDgSStTUzW9FXbtGBEWI2+vGlFva41lZ37t3Pvkr37t3Pvkr37t3PvqN44+biGmz9/vgoKCtS7d28NGzZM3bp1U2xsrCQpLCxMH330kcUVlqx+gI8eGtBaWw4c1x3/2qTY5Zs1dunP+t+B43poQOtiG/nJWc5ioaDI2sRkJWc5q6JsAACACxZ7DGo4h8Oh+fPnlzhuy5YtJQ4fMmSIhgwZUplllSk926kZH2z3OPFYkr7fk6KZH2wvtgegJt/3ID3bqeQspzJy8xXkX0eOuj41eu8GAAC4MBEMYIny7AE4deO5pt73ICkt54znRTQN9i/lmQAAAFWLYABLpOc45Qj00dyY9ro4yFdZuS7V86utIxm5mrZqm9JzPPcAOAJ9FB3i0NoSwkR0iEOOwOr3C3x5zosI9OUYUwAAUD0QDGCJQL/aWn7nNZr18S8ehxN1bdlQy++8RrVqGY/H1w/wUXxMe01ftc0jHESHODQ3pn21PDSnPHtFAn3ZawAAAKoHggEs4VfbWw+8n1DiOQaPf/yL5tzcrthzmgb7a8GIMCVnOZWZm696fnXkCKy+x+uX77wIggEAAKgeCAawxAmnq1goKPL9nhSdcJZ8p8b6AdU3CJyupp4XAQAA7InLlcISZV1FqDpfZai8is6LKEl1PS8CAFD10rOd2ns0S1sOHNfeY1lKz+YS3LAGewxgibJ+Lb8Qfk0vz3kRLlfJe0YAAPbA1etQnRAMYIm6Pt7q2rKhvi/hcKKuLRuqrs+FcbWemnZeBACg6pTn6nV8X6AqEQxgiex8l26LaiEjeZxrENWyoW6LaqHs/Avnl/SadF4EAKDqnO09fYDKRjCAJbJyCzRhxRaN7dpCY6NaKK+gUL61vbTlYJomrNiiN8ZGWF0iAACVqnxXrwOqDsEAlqjvX0fZTpde/HrPGccDAHAh4+p1qG64KhEscXE9X3U7wxV7uoU4dHE93yquCACAqsXV61DdEAxgifoBPpob077YCjE6xKGnqumdjAEAqEhFV68r6btwLt+FsACHEsEyRVfsOZaVp9SMHDUI8lejQF9WhAAA2+DqdahOCAawVP0AHwX6eiv94G61aNFR3t4XxmVKAQAoL65eh+qCQ4kAAAAAEAwAAAAAEAwAAAAAiGAAAAAAQAQDAAAAACIYwGLp2U79npItV/1m2peSo/Rsp9UlAQAA2BKXK4VlktJyNG3VNq1LTHYPiw5xKD6mvZoG+1f6/NOznUrOciojN19B/nXkqMvl4gAAgH0RDGCJ9GxnsVAgSWsTkzV91TYtGBFWqRvpVocSAACA6oZDiWCJ5CxnsVBQZG1ispKzKu+QorJCCYczAQAAOyIYwBIZufmljs8sY/z5sDKUAAAAVFcEA1giyK9OqePrlTH+fFgZSgAAAKorggEs4Qj0UXSIo8Rx0SEOOQIr7/wCK0MJAABAdUUwgCXqB/joicFt1bVlQ4/hXVs21BOD21bqicdWhhIAAIDqiqsSwRLp2U7N+vhXdWx+kW6PaqG8gkL51vbSloNpevzjXzXvlg6VFg7qB/goPqa9pq/aprWnXZVobkx7LlkKAABsiWAASyRnOfXljqP6csfRM46vzA30psH+WjAiTMlZTmXm5queXx05ArmPAQAAsC+CASxRHU4Arh9AEAAAACjCOQawBCcAAwAAVC8EA1iCE4ABAACqF4IBLFF0AvDp4YATgAEAAKzBOQawTNEJwMey8pSakaMGQf5qFOhLKAAAALAAewxgqfoBPmrRMEDe6QfVomEAoQAAAMAiBAMAAAAABAMAAAAABAMAAAAAIhgAAAAAEMEAFkvPdur3lGy56jfTvpQcpWc7rS4JAADAlrhcKSyTlJajaau2aV1isntYdIhD8THt1TTY38LKAAAA7Ic9BrBEerazWCiQpLWJyZq+aht7DgAAAKoYwQCWSM5yFgsFRdYmJis5i2AAAABQlQgGsERGbn6p4zPLGA8AAICKRTCAJYL86pQ6vl4Z4wEAAFCxCAawhCPQR9EhjhLHRYc45Aj0qeKKAAAA7I1gAEvUD/BRfEz7YuEgOsShuTHtVT+AYAAAAFCVuFwpLNM02F8LRoTpWFaeUjNy1CDIX40CfQkFAAAAFmCPASxVP8BHLRoGyDv9oFo0DCAUAAAAWIRgAAAAAIBgAAAAAIBgAAAAAEAEAwAAAAAiGNR4KSkpio2NVXh4uCIjIzV79mwVFBSU+NjvvvtOAwcOVMeOHXXjjTfqm2++qeJqAQAAUF0RDGq4SZMmKSAgQOvWrdPKlSu1fv16LV26tNjj9u3bp3vvvVcTJ07Upk2bdO+992rSpEk6cuRI1RcNAACAaodgUIPt379fGzduVFxcnPz9/dWsWTPFxsZq+fLlxR77/vvvKzw8XH369FHt2rXVr18/denSRW+//bYFlQMAAKC64QZnNVhiYqKCg4PVuHFj97Arr7xSSUlJysjIUFBQkHv4nj17FBoa6vH8li1baufOnWc1T5fLdX5FlzLNyph2dWfn3iV792/n3iV792/n3iV7929F73Z8nXHuCAY12IkTJ+Tv7+8xrOjv7Oxsj2BQ0mP9/PyUnZ19VvNMSEg4x2qtnXZ1Z+feJXv3b+feJXv3b+feJXv3b+feUb0RDGqwgIAA5eTkeAwr+rtu3boew/39/ZWbm+sxLDc3t9jjzsQYI0lq3bq1vL29z7XkErlcLv3666+VMu3qzs69S/bu3869S/bu3869S/bu34rei+ZZ9D0OlIZgUIOFhIQoLS1NycnJcjgckqS9e/eqSZMmqlevnsdjQ0ND9csvv3gM27Nnj9q2bVuueRUWFkqSfv311wqovGSVOe3qzs69S/bu3869S/bu3869S/bu34rei77HgdIQDGqwyy+/XJ07d9acOXM0a9YsHT9+XAsXLtTQoUOLPXbQoEFasmSJ1qxZo+uvv16ff/65Nm7cqBkzZpRrXrVr11a7du3k5eWlWrVqVXQrAACgEhhjVFhYqNq12eRD2WoZ9i3VaMnJyZo1a5Y2bNggLy8vDR48WFOnTpW3t7fCwsL02GOPadCgQZKkdevWad68eTpw4IAuvfRSxcXFqXv37hZ3AAAAgOqAYAAAAACA+xgAAAAAIBgAAAAAEMEAAAAAgAgGAAAAAEQwAAAAACCCAQAAAAARDGChlJQUxcbGKjw8XJGRkZo9e7YKCgqsLqvSpaam6rrrrtOGDRvcw7Zu3apbbrlFYWFh6tWrl959910LK6x4O3fu1O23366IiAhFRUXp/vvvV2pqqqQLv3dJWr9+vW655RZ16tRJUVFRevzxx5WbmyvJHv1Lksvl0ujRozV9+nT3MDv0vmbNGrVu3VphYWHuf3FxcZLs0X9aWpruv/9+RUZGqkuXLoqNjdXRo0clXdj9f/TRRx7veVhYmNq2bau2bdtKurB7Rw1nAIuMGjXKTJkyxWRnZ5sDBw6Y/v37m9dee83qsirVpk2bTJ8+fUxoaKj56aefjDHGpKWlmYiICLNs2TKTn59vfvzxRxMWFma2bt1qcbUVIycnx0RFRZkXXnjB5OXlmdTUVHPXXXeZcePGXfC9G2NMSkqKadeunVm1apVxuVzmyJEjZsCAAeaFF16wRf9Fnn/+eXPVVVeZadOmGWMu/OW+SHx8vJk+fXqx4Xbpf9SoUeYf//iHSU9PN5mZmWb8+PHm73//u236L/Lnn3+aqKgo88EHH9iud9Qs7DGAJfbv36+NGzcqLi5O/v7+atasmWJjY7V8+XKrS6s077//vqZOnarJkyd7DP/8888VHBysW2+9VbVr19a1116rgQMHXjCvRVJSkq666ir94x//kI+Pjy666CINHz5cP//88wXfuyQ1aNBAP/74o4YMGaJatWopLS1NeXl5atCggS36l07uMfn88891/fXXu4fZpfeEhAT3r8SnskP/27dv19atWxUfH6+goCAFBgbq8ccf19SpU23RfxFjjOLi4tSjRw/ddNNNtuodNQ/BAJZITExUcHCwGjdu7B525ZVXKikpSRkZGRZWVnm6du2qL774Qv369fMYnpiYqNDQUI9hLVu21M6dO6uyvEpzxRVXaNGiRfL29nYP++yzz9SmTZsLvvcigYGBkqTu3btr4MCBatSokYYMGWKL/lNSUjRjxgw988wz8vf3dw+3Q++FhYX65Zdf9O2336pnz56Kjo7WQw89pPT0dFv0v23bNrVs2VLvvPOOrrvuOnXt2lVz585Vo0aNbNF/kQ8//FB79uxxH0Znp95R8xAMYIkTJ054bCRIcv+dnZ1tRUmVrlGjRqpdu3ax4SW9Fn5+fhfk62CM0XPPPadvvvlGM2bMsFXv0slfideuXSsvLy9NmDDhgu+/sLBQcXFxuv3223XVVVd5jLvQe5dOnk/UunVr9e3bV2vWrNFbb72lffv2KS4uzhb9p6ena9euXdq3b5/ef/99ffDBBzpy5IimTZtmi/6lk5+Bl19+WXfffbf7BwK79I6aiWAASwQEBCgnJ8djWNHfdevWtaIky/j7+7tPRC2Sm5t7wb0OWVlZmjBhglavXq1ly5apVatWtum9iJ+fnxo3bqy4uDitW7fugu//lVdekY+Pj0aPHl1s3IXeuyQ5HA4tX75cQ4cOlb+/v5o2baq4uDitXbtWxpgLvn8fHx9J0owZMxQYGCiHw6FJkybpu+++s0X/krRhwwYdPXpUQ4cOdQ+zw7KPmotgAEuEhIQoLS1NycnJ7mF79+5VkyZNVK9ePQsrq3qhoaFKTEz0GLZnzx6FhIRYVFHFO3DggGJiYpSVlaWVK1eqVatWkuzR++bNm3XDDTfI6XS6hzmdTtWpU0ctW7a8oPv/8MMPtXHjRoWHhys8PFwff/yxPv74Y4WHh9vivd+5c6fmzZsnY4x7mNPplJeXl9q3b3/B99+yZUsVFhYqPz/fPaywsFCSdPXVV1/w/UsnD5u87rrrFBAQ4B5mh2UfNRfBAJa4/PLL1blzZ82ZM0dZWVk6ePCgFi5c6PGril1cd911Sk5O1tKlS5Wfn6+ffvpJq1evVkxMjNWlVYj09HT97W9/U6dOnbR48WI1aNDAPe5C712SWrVqpdzcXD3zzDNyOp06fPiw5s6dq6FDh6pv374XdP+ffvqpNm/erE2bNmnTpk0aMGCABgwYoE2bNtnivQ8ODtby5cu1aNEiFRQUKCkpSU8//bRuvvnmC/69l6S//OUvatasmR588EGdOHFCqampeu6559SnTx8NGDDggu9fkv773/+qS5cuHsPssOyj5qplTv0pA6hCycnJmjVrljZs2CAvLy8NHjxYU6dO9ThJ9ULVqlUrvfHGG4qMjJR08sols2fP1u7du9WgQQPFxsZqyJAhFldZMZYsWaL4+Hj5+/urVq1aHuO2bNlyQfdeZM+ePZozZ44SEhJUr149DRw40H2VJjv0X6To5Mv4+HhJF/ZyX2Tjxo169tlntXv3bvn6+qp///6Ki4uTr6+vLfo/cuSI4uPj9fPPPysvL0+9evXSjBkzFBQUZIv+w8LC9Pzzz6t79+4ew+3QO2omggEAAAAADiUCAAAAQDAAAAAAIIIBAAAAABEMAAAAAIhgAAAAAEAEAwAAAAAiGAAAAACQTYKBy+XSwYMHrS6jxjh69Kiys7OtLqNM+/bts7oEnIWa8jnMzMxUamqq1WUAF6ya/Bnbv3+/1SXApqrqO/S8gsGCBQs0evTo8y5i9OjRatu2rcLCwtSxY0eFhYXplltu0caNG8972pI0efJkffDBB+f8/DvvvFP//Oc/y/XYBQsWuO/uWdl69eqldu3aKSwszP3ade3aVXPnzlVhYeE5TTM5OVl9+/atsJV2q1attGHDhgqZ1qm+/vpr3XHHHef8/I8++kj9+/cv12MPHTqkVq1anfO8zsXQoUPVrl07HTt2zGP4hg0byl1LRX0+K8r5fg5PNX369Er7nF133XVKTEw85+eHhYVp06ZN5Xrs6NGj9d57753zvM7GH3/8obi4OP3lL39Rx44d1bNnTz3++OPKyMgo1/Pfe+899erV64zjH374YT388MMVVW6N1atXr3K/pxW1fuzVq5d7OtnZ2brjjjvUoUMH3XrrrRUy7VO/Z079V97l/HSnfsbKWq7O1tmsI8/W3Llz9fLLL1fKtK303nvvVdl3xfTp09WmTRuP5ahLly669957Ky0sVuV3YUUvz6eqyO/Q0tSu9DmU07hx43TvvfdKkvLz87Vo0SLdc889+vbbb1WvXr3zmvbx48fP6/mLFi06r+dXpscee8zjNuq7du3SbbfdJn9/f02YMOGsp5ebm1sj9hakpaXpfG7aPWjQIA0aNKgCK6o4W7du1Z9//qno6GgtW7ZMkydPtrqkCnG+n8Oqcr51btmypYIqqTiFhYUaO3asoqKi9OmnnyooKEgHDx7Ugw8+qAkTJmjp0qXnPY9Zs2adf6E4bzt27ND333+vDRs2KDg4uEKmefr3zPmqKeuC09XUuqubgQMHKj4+3v13amqq/vGPf2jChAlatmyZhZVVb1W1/J3VHoPNmzcrJiZGHTt21F//+lcdOnSoUoqqU6eORo8eraysLP3++++SpKysLM2cOVPXX3+9OnbsqG7dunn8ip+amqqpU6eqS5cuioyM1OTJk5Wenq4ZM2Zo06ZNeuWVV3T33XdLkg4cOKC7775bkZGR6tmzp5577jk5nU5JJ9PekCFDNHbsWIWHh2v16tUaPXq0FixYUK46TrVhwwZFR0frhRdeUGRkpCIjIzV79mz3vCpDq1at1KVLF/3666+STv4iOX36dPXs2VM9evRQVlaWdu3apbvuuksRERGKjo7Wo48+qszMTLlcLg0YMECSNGDAAK1Zs0aS9Mknn2jgwIHq3LmzhgwZou+//949v9zcXD311FPq3r27unTpotGjR2vbtm0eNX3//fe68cYbFRkZqQkTJnj8Cr5y5UoNGTJEkZGRCgsL07hx4zx+NfjXv/6l6667TmFhYRoyZIjWr1+vDRs26JFHHlFSUpLCwsJ05MgROZ1OvfDCC+rdu7ciIiJ01113eezybdWqlZ544glFRkbq7rvvLpbqy6rjVGda1irKsmXLdMMNN2jkyJF66623lJOTU+LjivZk/Pvf/1ZUVJQ6d+6suLg4ZWVluR9z4sQJzZw5U127dlVkZKSee+4597gjR45o0qRJ6tWrlzp06KDevXtr5cqV7vGtWrXSokWL1KNHD/drcuTIEUklf05KWxbO9nMoSV9++aWGDBmiTp06qW/fvlq6dKnHnrDU1FTdc8896tKliwYPHqy1a9e6x+3du1fjxo1Tjx491L59e/Xr10/ffPONe/wvv/yi0aNHKywsTF27dtULL7wgY4z69u0rSbrrrrv02muvSZJ+/PFHDR06VOHh4erfv78++ugj93SmT5+uCRMm6MYbb9Q111yjAwcOePwKXFYdp3v33XfVv39/derUSQMHDvSY1/k4fvy4fvvtN/Xv319BQUGSpGbNmmnmzJlq2rSpXC6XpNLfc0kqKCjQvHnz1KNHD3Xq1EkzZ85UQUGB+7Uo2ouzYMECTZgwQVOnTlV4eLiio6P1zDPPuKeTm5urRx55RBEREerevbuef/55j1+9Dx8+rEmTJunaa69VVFSUpkyZoqNHj0o6uV7t1auXFi1a5F7un332WX311Vfq27evwsLCdO+997qXpbLWUUWfoaLn/vWvf9WuXbvc40tbNxhj9M9//lNdu3ZVeHi45s6d634tpbI/Y6fKysrSrFmz1L17d1177bWaPHmykpOT3eMXLFig7t27KyIiQjExMfrqq6+KTePLL7/U7bffLknq2bOn3n333VKWiorTq1cvPfzww4qKitLgwYM1duxYPfTQQx6PGTdunF544YUSP2NlLVenf8ZKWz6KvPrqq+revbuio6P19NNPu5cHp9OpuXPn6sYbb1RYWJiuvfZaPf744+4fmrKzszVr1ixde+21Cg8P11133aXDhw/rpZde0urVq7V69Wr3j0rJycmaOnWqoqKi1LVrVz388MPu9e+GDRvUvXt3TZkyReHh4Xr11VfPeTumrHlJZX+HlfY9frpff/1VI0aMUFhYmG666Sa9/PLLlfYruCQ1aNBA/fv31y+//OIeVtq68PTtml27dp3zd+H//vc/XX311frzzz/dj01ISFDHjh2VlZV1VttQRQoKCjR37lz95S9/UZ8+fbRo0SL38mXltmy5mXJKTU014eHh5pVXXjFOp9Ns2rTJdOrUyYwaNaq8kzijUaNGmfnz57v/zsvLM0uWLDF9+vQxeXl5xhhjHnnkEfO3v/3NpKenm8LCQvPpp5+a0NBQs2/fPvc0xo0bZ1JTU01mZqYZO3asmTx5crHpnzhxwvTs2dPMmzfP5ObmmqSkJDN06FAzb948Y4wxq1atMqGhoea9994zeXl5Jicnx+P5ZdUxf/58M23aNGOMMT/99JMJDQ01EydONJmZmeb33383ffr0Mc8999x5v2bGGNOzZ0+zatUq999Op9P89NNPpkuXLuaNN95w996tWzfz559/mvT0dJOammoiIiJMfHy8ycnJMUePHjVjxowxd999tzHGmIMHD5rQ0FBz8OBBY4wx3377rencubPZuHGjKSgoMF9//bXp2LGj2b17tzHGmGnTppmBAweaffv2mby8PLN06VITFhZmDh8+bIwxJjQ01AwcONAcOnTIZGZmmrvvvtuMGTPGGGPM1q1bTYcOHczWrVuNMcb88ccf5vrrr3e/PqtWrTIRERFm8+bNxuVymXfeecd06NDBHD9+3Kxatcr07NnT3Xt8fLwZPHiwOXDggMnNzTULFiwwvXr1Mrm5ue467rrrLpOdnW3S09M9nl9WHUWvSZHSlrXzlZycbNq1a2f27NljCgsLzY033mj+/e9/u8cXLVOn1jVq1CiTkpJijh49am655RYzdepUY8zJZbFVq1bmgw8+MIWFhWb9+vWmVatWZvPmzcYYY+68804zdepUk52dbQoKCszrr79u2rdvb7KystyvWf/+/c2BAwdMRkaGufvuu82IESPc783pn5OyloWz+RyuX7/etGnTxnzyyScmPz/fbN++3URHR5slS5YYY04ud1dffbX57LPPTH5+vnn//fdNmzZtzP79+40xxtx4441m3rx5xul0mry8PDN79mwTHR1tjDHm+PHjJiIiwixYsMDk5eWZ/fv3m+joaLNixQp33z/99JMxxpgdO3aY9u3bm88++8wUFBSY//73vyYyMtKsXbvWXUfHjh3Nrl27THp6erHnl1ZH0WtS9BletWqV6dSpk/nxxx9NQUGB+fHHH02nTp3M559/fr6LlTHGmDFjxpi//OUv5sknnzRffPGFOXr0aLHHlOc9f+WVV0x+fr5JTEw0HTp0MKtXr3a/FkXrvqJl7/333zcFBQXm22+/Na1atTJbtmwxxhjz0EMPmZtvvtkkJSWZrKwsExcX537dnE6nuf766819991nMjIyTHp6urnvvvvMzTffbPLz892fgTlz5hin02m+/fZbExoaam6//XaTlpZmDhw4YLp06WLef/99d11lraOGDx9ujh49ajIyMsxtt91mxo4da4wpe93w7rvvmmuuucZs377d5OXlmWeeecaEhoa639PyfMaKlpV7773XjB071iQnJ5us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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "_ = sns.scatterplot(x='d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Sphingomonadales|f__Erythrobacteraceae|g__Porphyrobacter', y='median_mmNorm', data=erythrobacteraceae_genuses_v9)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e165fab2-79e7-490f-ba56-a45d6e0ef8f1",
   "metadata": {},
   "source": [
    "None of the individual genuses that are within the most significant family have compelling results."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "42c7a3ba-b5fb-4db8-8e7f-dcbdd8471aa1",
   "metadata": {},
   "source": [
    "## Correlate genuses with separate median titers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "927473c4-fcc1-4c39-a322-4af7668c1337",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Sphingobacteriia|o__Sphingobacteriales|f__Sphingobacteriaceae|g__Mucilaginibacter</th>\n",
       "      <td>0.473667</td>\n",
       "      <td>0.006174</td>\n",
       "      <td>0.756647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Vibrionales|f__Vibrionaceae|g__Paraphotobacterium</th>\n",
       "      <td>0.462952</td>\n",
       "      <td>0.007626</td>\n",
       "      <td>0.756647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Neisseriales|f__Neisseriaceae|g__Vitreoscilla</th>\n",
       "      <td>0.459636</td>\n",
       "      <td>0.008131</td>\n",
       "      <td>0.756647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__Bacteroidales|f__Paludibacteraceae|g__Paludibacter</th>\n",
       "      <td>0.444474</td>\n",
       "      <td>0.010813</td>\n",
       "      <td>0.756647</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|f__Eubacteriaceae|g__Acetobacterium</th>\n",
       "      <td>0.439256</td>\n",
       "      <td>0.011894</td>\n",
       "      <td>0.756647</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Bacteroidetes|c__Sphingobacterii...  0.473667  0.006174   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.462952  0.007626   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.459636  0.008131   \n",
       "d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__...  0.444474  0.010813   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.439256  0.011894   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Bacteroidetes|c__Sphingobacterii...  0.756647  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.756647  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.756647  \n",
       "d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__...  0.756647  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.756647  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v5_DTAPHib_correlations = kraken_genus_abunds_v5.transpose().apply(spearmanr, b=meta_v5['median_mmNorm_DTAPHib']).transpose()\n",
    "v5_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v5_DTAPHib_correlations['p_adj'] = p_adjust(v5_DTAPHib_correlations['p_value'])\n",
    "v5_DTAPHib_correlations = v5_DTAPHib_correlations.sort_values('p_value')\n",
    "v5_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "05af18c1-44d3-4c7f-ab10-210514f3bc78",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Pasteurellales|f__Pasteurellaceae|g__Actinobacillus</th>\n",
       "      <td>-0.496471</td>\n",
       "      <td>0.003850</td>\n",
       "      <td>0.99369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacillales|f__Planococcaceae|g__Kurthia</th>\n",
       "      <td>0.415750</td>\n",
       "      <td>0.017956</td>\n",
       "      <td>0.99369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Pectobacteriaceae|g__Sodalis</th>\n",
       "      <td>0.378724</td>\n",
       "      <td>0.032558</td>\n",
       "      <td>0.99369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Comamonadaceae|g__Comamonas</th>\n",
       "      <td>0.368513</td>\n",
       "      <td>0.037953</td>\n",
       "      <td>0.99369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Xanthomonadales|f__Xanthomonadaceae|g__Luteimonas</th>\n",
       "      <td>0.365048</td>\n",
       "      <td>0.039940</td>\n",
       "      <td>0.99369</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.496471  0.003850   \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.415750  0.017956   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.378724  0.032558   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.368513  0.037953   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.365048  0.039940   \n",
       "\n",
       "                                                      p_adj  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.99369  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.99369  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.99369  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.99369  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.99369  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_genus_abunds_PCV_v5 = kraken_genus_abunds[meta_PCV_v5.index]\n",
    "kraken_genus_abunds_PCV_v5 = kraken_genus_abunds_PCV_v5.loc[(kraken_genus_abunds_PCV_v5 > 0).sum(axis=1) > kraken_genus_abunds_PCV_v5.shape[1]*.2]\n",
    "v5_PCV_correlations = kraken_genus_abunds_PCV_v5.transpose().apply(spearmanr, b=meta_PCV_v5['median_mmNorm_PCV']).transpose()\n",
    "v5_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v5_PCV_correlations['p_adj'] = p_adjust(v5_PCV_correlations['p_value'])\n",
    "v5_PCV_correlations = v5_PCV_correlations.sort_values('p_value')\n",
    "v5_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "68a056f2-c42f-47f3-a315-dfd72deb8842",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Pseudonocardiales|f__Pseudonocardiaceae|g__Amycolatopsis</th>\n",
       "      <td>0.524850</td>\n",
       "      <td>0.001438</td>\n",
       "      <td>0.373509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Propionibacteriales|f__Propionibacteriaceae|g__Propionimicrobium</th>\n",
       "      <td>0.510649</td>\n",
       "      <td>0.002030</td>\n",
       "      <td>0.373509</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae|g__Paludisphaera</th>\n",
       "      <td>0.492606</td>\n",
       "      <td>0.003080</td>\n",
       "      <td>0.377794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|f__Peptostreptococcaceae|g__Filifactor</th>\n",
       "      <td>0.478620</td>\n",
       "      <td>0.004191</td>\n",
       "      <td>0.385579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacillales|f__Bacillaceae|g__Virgibacillus</th>\n",
       "      <td>0.425994</td>\n",
       "      <td>0.012004</td>\n",
       "      <td>0.791543</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.524850  0.001438   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.510649  0.002030   \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.492606  0.003080   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.478620  0.004191   \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.425994  0.012004   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.373509  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.373509  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.377794  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.385579  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.791543  "
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v6_DTAPHib_correlations = kraken_genus_abunds_v6.transpose().apply(spearmanr, b=meta_v6['median_mmNorm_DTAPHib']).transpose()\n",
    "v6_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v6_DTAPHib_correlations['p_adj'] = p_adjust(v6_DTAPHib_correlations['p_value'])\n",
    "v6_DTAPHib_correlations = v6_DTAPHib_correlations.sort_values('p_value')\n",
    "v6_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "f14a16b1-eb19-4fc2-85f0-773bd2ed8dad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Enterobacteriaceae|g__Shigella</th>\n",
       "      <td>-0.607367</td>\n",
       "      <td>0.000139</td>\n",
       "      <td>0.051319</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Pseudonocardiales|f__Pseudonocardiaceae|g__Pseudonocardia</th>\n",
       "      <td>0.463529</td>\n",
       "      <td>0.005763</td>\n",
       "      <td>0.663726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae|g__Paludisphaera</th>\n",
       "      <td>0.438488</td>\n",
       "      <td>0.009486</td>\n",
       "      <td>0.663726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o__Gloeobacterales|f__Gloeobacteraceae|g__Gloeobacter</th>\n",
       "      <td>0.425707</td>\n",
       "      <td>0.012068</td>\n",
       "      <td>0.663726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Deinococcus-Thermus|c__Deinococci|o__Thermales|f__Thermaceae|g__Thermus</th>\n",
       "      <td>0.405208</td>\n",
       "      <td>0.017437</td>\n",
       "      <td>0.663726</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.607367  0.000139   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.463529  0.005763   \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.438488  0.009486   \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.425707  0.012068   \n",
       "d__Bacteria|p__Deinococcus-Thermus|c__Deinococc...  0.405208  0.017437   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.051319  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.663726  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.663726  \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.663726  \n",
       "d__Bacteria|p__Deinococcus-Thermus|c__Deinococc...  0.663726  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_genus_abunds_PCV_v6 = kraken_genus_abunds[meta_PCV_v6.index]\n",
    "kraken_genus_abunds_PCV_v6 = kraken_genus_abunds_PCV_v6.loc[(kraken_genus_abunds_PCV_v6 > 0).sum(axis=1) > kraken_genus_abunds_PCV_v6.shape[1]*.2]\n",
    "v6_PCV_correlations = kraken_genus_abunds_PCV_v6.transpose().apply(spearmanr, b=meta_PCV_v6['median_mmNorm_PCV']).transpose()\n",
    "v6_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v6_PCV_correlations['p_adj'] = p_adjust(v6_PCV_correlations['p_value'])\n",
    "v6_PCV_correlations = v6_PCV_correlations.sort_values('p_value')\n",
    "v6_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5b468cca-db7b-44b9-9d26-bd6d127f68f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Chlorobi|c__Chlorobia|o__Chlorobiales|f__Chlorobiaceae|g__Prosthecochloris</th>\n",
       "      <td>0.437694</td>\n",
       "      <td>0.005993</td>\n",
       "      <td>0.987225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Chitinophagia|o__Chitinophagales|f__Chitinophagaceae|g__Flavisolibacter</th>\n",
       "      <td>0.415566</td>\n",
       "      <td>0.009468</td>\n",
       "      <td>0.987225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Corynebacteriales|f__Gordoniaceae|g__Gordonia</th>\n",
       "      <td>-0.406547</td>\n",
       "      <td>0.011313</td>\n",
       "      <td>0.987225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Cytophagia|o__Cytophagales|f__Hymenobacteraceae|g__Pontibacter</th>\n",
       "      <td>0.400977</td>\n",
       "      <td>0.012599</td>\n",
       "      <td>0.987225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|g__Intestinimonas</th>\n",
       "      <td>0.385037</td>\n",
       "      <td>0.016982</td>\n",
       "      <td>0.987225</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Chlorobi|c__Chlorobia|o__Chlorob...  0.437694  0.005993   \n",
       "d__Bacteria|p__Bacteroidetes|c__Chitinophagia|o...  0.415566  0.009468   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria... -0.406547  0.011313   \n",
       "d__Bacteria|p__Bacteroidetes|c__Cytophagia|o__C...  0.400977  0.012599   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.385037  0.016982   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Chlorobi|c__Chlorobia|o__Chlorob...  0.987225  \n",
       "d__Bacteria|p__Bacteroidetes|c__Chitinophagia|o...  0.987225  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.987225  \n",
       "d__Bacteria|p__Bacteroidetes|c__Cytophagia|o__C...  0.987225  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.987225  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v7_DTAPHib_correlations = kraken_genus_abunds_v7.transpose().apply(spearmanr, b=meta_v7['median_mmNorm_DTAPHib']).transpose()\n",
    "v7_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v7_DTAPHib_correlations['p_adj'] = p_adjust(v7_DTAPHib_correlations['p_value'])\n",
    "v7_DTAPHib_correlations = v7_DTAPHib_correlations.sort_values('p_value')\n",
    "v7_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "3923a5d3-7b46-4a66-9da1-74db3082c884",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Tissierellia|o__Tissierellales|f__Peptoniphilaceae|g__Murdochiella</th>\n",
       "      <td>-0.473311</td>\n",
       "      <td>0.002689</td>\n",
       "      <td>0.534605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Comamonadaceae|g__Polaromonas</th>\n",
       "      <td>0.461895</td>\n",
       "      <td>0.003509</td>\n",
       "      <td>0.534605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|f__Lachnospiraceae|g__Lachnoclostridium</th>\n",
       "      <td>0.461210</td>\n",
       "      <td>0.003564</td>\n",
       "      <td>0.534605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Enterobacteriaceae|g__Shigella</th>\n",
       "      <td>-0.430714</td>\n",
       "      <td>0.006945</td>\n",
       "      <td>0.560036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Pectobacteriaceae|g__Pectobacterium</th>\n",
       "      <td>-0.428655</td>\n",
       "      <td>0.007250</td>\n",
       "      <td>0.560036</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Firmicutes|c__Tissierellia|o__Ti... -0.473311  0.002689   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.461895  0.003509   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.461210  0.003564   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.430714  0.006945   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.428655  0.007250   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Firmicutes|c__Tissierellia|o__Ti...  0.534605  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.534605  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.534605  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.560036  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.560036  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta_PCV_v7 = meta_PCV.query(\"VisitCode == 'V7'\")\n",
    "kraken_genus_abunds_PCV_v7 = kraken_genus_abunds[meta_PCV_v7.index]\n",
    "kraken_genus_abunds_PCV_v7 = kraken_genus_abunds_PCV_v7.loc[(kraken_genus_abunds_PCV_v7 > 0).sum(axis=1) > kraken_genus_abunds_PCV_v7.shape[1]*.2]\n",
    "v7_PCV_correlations = kraken_genus_abunds_PCV_v7.transpose().apply(spearmanr, b=meta_PCV_v7['median_mmNorm_PCV']).transpose()\n",
    "v7_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v7_PCV_correlations['p_adj'] = p_adjust(v7_PCV_correlations['p_value'])\n",
    "v7_PCV_correlations = v7_PCV_correlations.sort_values('p_value')\n",
    "v7_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "99790fcf-34d0-4f2c-b51e-dd875c30b99a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Coriobacteriia|o__Eggerthellales|f__Eggerthellaceae|g__Phoenicibacter</th>\n",
       "      <td>0.471128</td>\n",
       "      <td>0.003249</td>\n",
       "      <td>0.907846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Solibacteres|o__Solibacterales|f__Solibacteraceae|g__Candidatus_Solibacter</th>\n",
       "      <td>0.458375</td>\n",
       "      <td>0.004329</td>\n",
       "      <td>0.907846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae|g__Terriglobus</th>\n",
       "      <td>0.381523</td>\n",
       "      <td>0.019808</td>\n",
       "      <td>0.907846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Tissierellia|o__Tissierellales|f__Peptoniphilaceae|g__Peptoniphilus</th>\n",
       "      <td>0.380168</td>\n",
       "      <td>0.020286</td>\n",
       "      <td>0.907846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Comamonadaceae|g__Ottowia</th>\n",
       "      <td>0.377069</td>\n",
       "      <td>0.021417</td>\n",
       "      <td>0.907846</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Actinobacteria|c__Coriobacteriia...  0.471128  0.003249   \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...  0.458375  0.004329   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...  0.381523  0.019808   \n",
       "d__Bacteria|p__Firmicutes|c__Tissierellia|o__Ti...  0.380168  0.020286   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.377069  0.021417   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Actinobacteria|c__Coriobacteriia...  0.907846  \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...  0.907846  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...  0.907846  \n",
       "d__Bacteria|p__Firmicutes|c__Tissierellia|o__Ti...  0.907846  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.907846  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v9_DTAPHib_correlations = kraken_genus_abunds_v9.transpose().apply(spearmanr, b=meta_v9['median_mmNorm_DTAPHib']).transpose()\n",
    "v9_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v9_DTAPHib_correlations['p_adj'] = p_adjust(v9_DTAPHib_correlations['p_value'])\n",
    "v9_DTAPHib_correlations = v9_DTAPHib_correlations.sort_values('p_value')\n",
    "v9_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "2f2c7a0e-26f9-41f8-8589-3b30fc1056a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Kiritimatiellaeota|c__Kiritimatiellae|o__Kiritimatiellales|f__Kiritimatiellaceae|g__Kiritimatiella</th>\n",
       "      <td>-0.475762</td>\n",
       "      <td>0.002919</td>\n",
       "      <td>0.607965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Rhodobacterales|f__Hyphomonadaceae|g__Maricaulis</th>\n",
       "      <td>-0.470493</td>\n",
       "      <td>0.003296</td>\n",
       "      <td>0.607965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Burkholderiaceae|g__Ralstonia</th>\n",
       "      <td>-0.458693</td>\n",
       "      <td>0.004299</td>\n",
       "      <td>0.607965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacillales|f__Planococcaceae|g__Planococcus</th>\n",
       "      <td>0.458073</td>\n",
       "      <td>0.004358</td>\n",
       "      <td>0.607965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Immundisolibacterales|f__Immundisolibacteraceae|g__Immundisolibacter</th>\n",
       "      <td>-0.444494</td>\n",
       "      <td>0.005847</td>\n",
       "      <td>0.652536</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Kiritimatiellaeota|c__Kiritimati... -0.475762  0.002919   \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac... -0.470493  0.003296   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact... -0.458693  0.004299   \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.458073  0.004358   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.444494  0.005847   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Kiritimatiellaeota|c__Kiritimati...  0.607965  \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac...  0.607965  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.607965  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.607965  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.652536  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta_PCV_v9 = meta_PCV.query(\"VisitCode == 'V9'\")\n",
    "kraken_genus_abunds_PCV_v9 = kraken_genus_abunds[meta_PCV_v9.index]\n",
    "kraken_genus_abunds_PCV_v9 = kraken_genus_abunds_PCV_v9.loc[(kraken_genus_abunds_PCV_v9 > 0).sum(axis=1) > kraken_genus_abunds_PCV_v9.shape[1]*.2]\n",
    "v9_PCV_correlations = kraken_genus_abunds_PCV_v9.transpose().apply(spearmanr, b=meta_PCV_v9['median_mmNorm_PCV']).transpose()\n",
    "v9_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v9_PCV_correlations['p_adj'] = p_adjust(v9_PCV_correlations['p_value'])\n",
    "v9_PCV_correlations = v9_PCV_correlations.sort_values('p_value')\n",
    "v9_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e6b36e5-54c5-4342-b2e9-5339afeca39d",
   "metadata": {},
   "source": [
    "## Correlate families with separate median titers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "394fd6fc-81b2-4ab8-a1be-5f7ffa3f0ee7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__Bacteroidales|f__Paludibacteraceae</th>\n",
       "      <td>0.444474</td>\n",
       "      <td>0.010813</td>\n",
       "      <td>0.612366</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Chitinophagia|o__Chitinophagales|f__Chitinophagaceae</th>\n",
       "      <td>0.407051</td>\n",
       "      <td>0.020769</td>\n",
       "      <td>0.612366</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Clostridia|o__Clostridiales|f__Ruminococcaceae</th>\n",
       "      <td>0.397908</td>\n",
       "      <td>0.024108</td>\n",
       "      <td>0.612366</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Neisseriales|f__Neisseriaceae</th>\n",
       "      <td>0.396245</td>\n",
       "      <td>0.024761</td>\n",
       "      <td>0.612366</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Neisseriales|f__Chromobacteriaceae</th>\n",
       "      <td>0.395324</td>\n",
       "      <td>0.025128</td>\n",
       "      <td>0.612366</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__...  0.444474  0.010813   \n",
       "d__Bacteria|p__Bacteroidetes|c__Chitinophagia|o...  0.407051  0.020769   \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.397908  0.024108   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.396245  0.024761   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.395324  0.025128   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__...  0.612366  \n",
       "d__Bacteria|p__Bacteroidetes|c__Chitinophagia|o...  0.612366  \n",
       "d__Bacteria|p__Firmicutes|c__Clostridia|o__Clos...  0.612366  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.612366  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.612366  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v5_DTAPHib_correlations = kraken_family_abunds_v5.transpose().apply(spearmanr, b=meta_v5['median_mmNorm_DTAPHib']).transpose()\n",
    "v5_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v5_DTAPHib_correlations['p_adj'] = p_adjust(v5_DTAPHib_correlations['p_value'])\n",
    "v5_DTAPHib_correlations = v5_DTAPHib_correlations.sort_values('p_value')\n",
    "v5_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "fa24dec5-ea00-4222-8870-00a893b21799",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfovibrionales|f__Desulfovibrionaceae</th>\n",
       "      <td>0.425139</td>\n",
       "      <td>0.015283</td>\n",
       "      <td>0.898323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Synergistetes|c__Synergistia|o__Synergistales|f__Synergistaceae</th>\n",
       "      <td>0.416756</td>\n",
       "      <td>0.017652</td>\n",
       "      <td>0.898323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Propionibacteriales|f__Propionibacteriaceae</th>\n",
       "      <td>-0.404843</td>\n",
       "      <td>0.021538</td>\n",
       "      <td>0.898323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfuromonadales|f__Desulfuromonadaceae</th>\n",
       "      <td>0.402286</td>\n",
       "      <td>0.022458</td>\n",
       "      <td>0.898323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Methylococcales|f__Methylococcaceae</th>\n",
       "      <td>0.336368</td>\n",
       "      <td>0.059789</td>\n",
       "      <td>0.966413</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.425139  0.015283   \n",
       "d__Bacteria|p__Synergistetes|c__Synergistia|o__...  0.416756  0.017652   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria... -0.404843  0.021538   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.402286  0.022458   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.336368  0.059789   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.898323  \n",
       "d__Bacteria|p__Synergistetes|c__Synergistia|o__...  0.898323  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.898323  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.898323  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.966413  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_PCV_v5 = kraken_family_abunds[meta_PCV_v5.index]\n",
    "kraken_family_abunds_PCV_v5 = kraken_family_abunds_PCV_v5.loc[(kraken_family_abunds_PCV_v5 > 0).sum(axis=1) > kraken_family_abunds_PCV_v5.shape[1]*.2]\n",
    "v5_PCV_correlations = kraken_family_abunds_PCV_v5.transpose().apply(spearmanr, b=meta_PCV_v5['median_mmNorm_PCV']).transpose()\n",
    "v5_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v5_PCV_correlations['p_adj'] = p_adjust(v5_PCV_correlations['p_value'])\n",
    "v5_PCV_correlations = v5_PCV_correlations.sort_values('p_value')\n",
    "v5_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "1762a943-6026-4670-8c40-3506b04b8eee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae</th>\n",
       "      <td>0.528937</td>\n",
       "      <td>0.001299</td>\n",
       "      <td>0.232541</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae</th>\n",
       "      <td>0.402223</td>\n",
       "      <td>0.018364</td>\n",
       "      <td>0.983715</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Propionibacteriales|f__Propionibacteriaceae</th>\n",
       "      <td>0.377459</td>\n",
       "      <td>0.027754</td>\n",
       "      <td>0.983715</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfarculales|f__Desulfarculaceae</th>\n",
       "      <td>0.352386</td>\n",
       "      <td>0.040956</td>\n",
       "      <td>0.983715</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Oceanospirillales|f__Halomonadaceae</th>\n",
       "      <td>0.349790</td>\n",
       "      <td>0.042572</td>\n",
       "      <td>0.983715</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.528937  0.001299   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...  0.402223  0.018364   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.377459  0.027754   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.352386  0.040956   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.349790  0.042572   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.232541  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...  0.983715  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.983715  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.983715  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.983715  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v6_DTAPHib_correlations = kraken_family_abunds_v6.transpose().apply(spearmanr, b=meta_v6['median_mmNorm_DTAPHib']).transpose()\n",
    "v6_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v6_DTAPHib_correlations['p_adj'] = p_adjust(v6_DTAPHib_correlations['p_value'])\n",
    "v6_DTAPHib_correlations = v6_DTAPHib_correlations.sort_values('p_value')\n",
    "v6_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "62f76f77-1c28-48e8-9f0e-d15f09a85aa4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae</th>\n",
       "      <td>0.475452</td>\n",
       "      <td>0.004486</td>\n",
       "      <td>0.803024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o__Gloeobacterales|f__Gloeobacteraceae</th>\n",
       "      <td>0.425707</td>\n",
       "      <td>0.012068</td>\n",
       "      <td>0.985283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfarculales|f__Desulfarculaceae</th>\n",
       "      <td>0.389470</td>\n",
       "      <td>0.022800</td>\n",
       "      <td>0.985283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Alteromonadales|f__Shewanellaceae</th>\n",
       "      <td>-0.383285</td>\n",
       "      <td>0.025250</td>\n",
       "      <td>0.985283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Micrococcales|f__Cellulomonadaceae</th>\n",
       "      <td>-0.365584</td>\n",
       "      <td>0.033488</td>\n",
       "      <td>0.985283</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.475452  0.004486   \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.425707  0.012068   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.389470  0.022800   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.383285  0.025250   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria... -0.365584  0.033488   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.803024  \n",
       "d__Bacteria|p__Cyanobacteria|c__Gloeobacteria|o...  0.985283  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.985283  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.985283  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.985283  "
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_PCV_v6 = kraken_family_abunds[meta_PCV_v6.index]\n",
    "kraken_family_abunds_PCV_v6 = kraken_family_abunds_PCV_v6.loc[(kraken_family_abunds_PCV_v6 > 0).sum(axis=1) > kraken_family_abunds_PCV_v6.shape[1]*.2]\n",
    "v6_PCV_correlations = kraken_family_abunds_PCV_v6.transpose().apply(spearmanr, b=meta_PCV_v6['median_mmNorm_PCV']).transpose()\n",
    "v6_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v6_PCV_correlations['p_adj'] = p_adjust(v6_PCV_correlations['p_value'])\n",
    "v6_PCV_correlations = v6_PCV_correlations.sort_values('p_value')\n",
    "v6_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "082d6c2b-20e5-4bb1-8a40-8c5ca8802ff6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Corynebacteriales|f__Gordoniaceae</th>\n",
       "      <td>-0.406547</td>\n",
       "      <td>0.011313</td>\n",
       "      <td>0.988599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Rhizobiales|f__Chelatococcaceae</th>\n",
       "      <td>0.311641</td>\n",
       "      <td>0.056826</td>\n",
       "      <td>0.988599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Cyanobacteria|o__Synechococcales|f__Prochloraceae</th>\n",
       "      <td>-0.308002</td>\n",
       "      <td>0.059938</td>\n",
       "      <td>0.988599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Myxococcales|f__Archangiaceae</th>\n",
       "      <td>0.304564</td>\n",
       "      <td>0.063001</td>\n",
       "      <td>0.988599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__Marinilabiliales|f__Marinifilaceae</th>\n",
       "      <td>0.292587</td>\n",
       "      <td>0.074649</td>\n",
       "      <td>0.988599</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria... -0.406547  0.011313   \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac...  0.311641  0.056826   \n",
       "d__Bacteria|p__Cyanobacteria|o__Synechococcales... -0.308002  0.059938   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.304564  0.063001   \n",
       "d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__...  0.292587  0.074649   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.988599  \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac...  0.988599  \n",
       "d__Bacteria|p__Cyanobacteria|o__Synechococcales...  0.988599  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.988599  \n",
       "d__Bacteria|p__Bacteroidetes|c__Bacteroidia|o__...  0.988599  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v7_DTAPHib_correlations = kraken_family_abunds_v7.transpose().apply(spearmanr, b=meta_v7['median_mmNorm_DTAPHib']).transpose()\n",
    "v7_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v7_DTAPHib_correlations['p_adj'] = p_adjust(v7_DTAPHib_correlations['p_value'])\n",
    "v7_DTAPHib_correlations = v7_DTAPHib_correlations.sort_values('p_value')\n",
    "v7_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d9380d98-ad70-441d-814c-a872774aeea8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Thermodesulfobacteria|c__Thermodesulfobacteria|o__Thermodesulfobacteriales|f__Thermodesulfobacteriaceae</th>\n",
       "      <td>0.361319</td>\n",
       "      <td>0.025826</td>\n",
       "      <td>0.992195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Nitrospirae|c__Nitrospira|o__Nitrospirales|f__Nitrospiraceae</th>\n",
       "      <td>-0.359667</td>\n",
       "      <td>0.026563</td>\n",
       "      <td>0.992195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Betaproteobacteria|o__Burkholderiales|f__Comamonadaceae</th>\n",
       "      <td>0.351021</td>\n",
       "      <td>0.030707</td>\n",
       "      <td>0.992195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Enterobacterales|f__Yersiniaceae</th>\n",
       "      <td>-0.341618</td>\n",
       "      <td>0.035804</td>\n",
       "      <td>0.992195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Planctomycetes|c__Planctomycetia|o__Planctomycetales|f__Isosphaeraceae</th>\n",
       "      <td>0.331231</td>\n",
       "      <td>0.042216</td>\n",
       "      <td>0.992195</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Thermodesulfobacteria|c__Thermod...  0.361319  0.025826   \n",
       "d__Bacteria|p__Nitrospirae|c__Nitrospira|o__Nit... -0.359667  0.026563   \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.351021  0.030707   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.341618  0.035804   \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.331231  0.042216   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Thermodesulfobacteria|c__Thermod...  0.992195  \n",
       "d__Bacteria|p__Nitrospirae|c__Nitrospira|o__Nit...  0.992195  \n",
       "d__Bacteria|p__Proteobacteria|c__Betaproteobact...  0.992195  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.992195  \n",
       "d__Bacteria|p__Planctomycetes|c__Planctomycetia...  0.992195  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_PCV_v7 = kraken_family_abunds[meta_PCV_v7.index]\n",
    "kraken_family_abunds_PCV_v7 = kraken_family_abunds_PCV_v7.loc[(kraken_family_abunds_PCV_v7 > 0).sum(axis=1) > kraken_family_abunds_PCV_v7.shape[1]*.2]\n",
    "v7_PCV_correlations = kraken_family_abunds_PCV_v7.transpose().apply(spearmanr, b=meta_PCV_v7['median_mmNorm_PCV']).transpose()\n",
    "v7_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v7_PCV_correlations['p_adj'] = p_adjust(v7_PCV_correlations['p_value'])\n",
    "v7_PCV_correlations = v7_PCV_correlations.sort_values('p_value')\n",
    "v7_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "60c35ef7-cd02-418d-9cb1-06e6f6fef953",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Solibacteres|o__Solibacterales|f__Solibacteraceae</th>\n",
       "      <td>0.458375</td>\n",
       "      <td>0.004329</td>\n",
       "      <td>0.807624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfuromonadales|f__Desulfuromonadaceae</th>\n",
       "      <td>0.420602</td>\n",
       "      <td>0.009540</td>\n",
       "      <td>0.807624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Deltaproteobacteria|o__Desulfobacterales|f__Desulfobacteraceae</th>\n",
       "      <td>0.412569</td>\n",
       "      <td>0.011162</td>\n",
       "      <td>0.807624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Negativicutes|o__Veillonellales|f__Veillonellaceae</th>\n",
       "      <td>-0.355758</td>\n",
       "      <td>0.030697</td>\n",
       "      <td>0.807624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Acidobacteria|c__Acidobacteriia|o__Acidobacteriales|f__Acidobacteriaceae</th>\n",
       "      <td>0.354837</td>\n",
       "      <td>0.031163</td>\n",
       "      <td>0.807624</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...  0.458375  0.004329   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.420602  0.009540   \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.412569  0.011162   \n",
       "d__Bacteria|p__Firmicutes|c__Negativicutes|o__V... -0.355758  0.030697   \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...  0.354837  0.031163   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Acidobacteria|c__Solibacteres|o_...  0.807624  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.807624  \n",
       "d__Bacteria|p__Proteobacteria|c__Deltaproteobac...  0.807624  \n",
       "d__Bacteria|p__Firmicutes|c__Negativicutes|o__V...  0.807624  \n",
       "d__Bacteria|p__Acidobacteria|c__Acidobacteriia|...  0.807624  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v9_DTAPHib_correlations = kraken_family_abunds_v9.transpose().apply(spearmanr, b=meta_v9['median_mmNorm_DTAPHib']).transpose()\n",
    "v9_DTAPHib_correlations.columns = ['rho', 'p_value']\n",
    "v9_DTAPHib_correlations['p_adj'] = p_adjust(v9_DTAPHib_correlations['p_value'])\n",
    "v9_DTAPHib_correlations = v9_DTAPHib_correlations.sort_values('p_value')\n",
    "v9_DTAPHib_correlations.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "12626556-a09b-4ece-8157-e22b4a63341e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rho</th>\n",
       "      <th>p_value</th>\n",
       "      <th>p_adj</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Kiritimatiellaeota|c__Kiritimatiellae|o__Kiritimatiellales|f__Kiritimatiellaceae</th>\n",
       "      <td>-0.475762</td>\n",
       "      <td>0.002919</td>\n",
       "      <td>0.423921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Gammaproteobacteria|o__Immundisolibacterales|f__Immundisolibacteraceae</th>\n",
       "      <td>-0.444494</td>\n",
       "      <td>0.005847</td>\n",
       "      <td>0.423921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacillales|f__Planococcaceae</th>\n",
       "      <td>0.435041</td>\n",
       "      <td>0.007126</td>\n",
       "      <td>0.423921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Actinobacteria|c__Actinobacteria|o__Micrococcales|f__Brevibacteriaceae</th>\n",
       "      <td>0.433598</td>\n",
       "      <td>0.007341</td>\n",
       "      <td>0.423921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d__Bacteria|p__Proteobacteria|c__Alphaproteobacteria|o__Rhodobacterales|f__Hyphomonadaceae</th>\n",
       "      <td>-0.420470</td>\n",
       "      <td>0.009565</td>\n",
       "      <td>0.441881</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         rho   p_value  \\\n",
       "d__Bacteria|p__Kiritimatiellaeota|c__Kiritimati... -0.475762  0.002919   \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac... -0.444494  0.005847   \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.435041  0.007126   \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.433598  0.007341   \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac... -0.420470  0.009565   \n",
       "\n",
       "                                                       p_adj  \n",
       "d__Bacteria|p__Kiritimatiellaeota|c__Kiritimati...  0.423921  \n",
       "d__Bacteria|p__Proteobacteria|c__Gammaproteobac...  0.423921  \n",
       "d__Bacteria|p__Firmicutes|c__Bacilli|o__Bacilla...  0.423921  \n",
       "d__Bacteria|p__Actinobacteria|c__Actinobacteria...  0.423921  \n",
       "d__Bacteria|p__Proteobacteria|c__Alphaproteobac...  0.441881  "
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kraken_family_abunds_PCV_v9 = kraken_family_abunds[meta_PCV_v9.index]\n",
    "kraken_family_abunds_PCV_v9 = kraken_family_abunds_PCV_v9.loc[(kraken_family_abunds_PCV_v9 > 0).sum(axis=1) > kraken_family_abunds_PCV_v9.shape[1]*.2]\n",
    "v9_PCV_correlations = kraken_family_abunds_PCV_v9.transpose().apply(spearmanr, b=meta_PCV_v9['median_mmNorm_PCV']).transpose()\n",
    "v9_PCV_correlations.columns = ['rho', 'p_value']\n",
    "v9_PCV_correlations['p_adj'] = p_adjust(v9_PCV_correlations['p_value'])\n",
    "v9_PCV_correlations = v9_PCV_correlations.sort_values('p_value')\n",
    "v9_PCV_correlations.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eefcfd33-8664-4be5-bb81-e6db50751b61",
   "metadata": {},
   "source": [
    "All significance goes away when we split between DTAPHib and PCV specific titers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2dd36d49-5dab-413c-ad91-4395dba7638d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
